javascript-在EmberJS中重定向
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-在EmberJS中重定向,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1883字,纯文字阅读大概需要3分钟。
内容图文
我是EmberJS的新手,因此非常感谢您的帮助.我正在尝试做一些我认为在理论上应该很简单的事情-我有一个组件,并且在DOM元素之一上,我想要一个单击处理程序,该处理程序可以重定向到路线,但是我一直无法弄清楚该如何做到这一点.
我有我的组成部分:
//components/sample-card-header.js
import Component from '@ember/component';
export default Component.extend({
actions: {
goToSamples() {
this.transitionTo('samples');
}
}
});
还有我的车把模板:
//templates/components/sample-card-header.hbs
< div class =“ card_header” {{action“ goToSamples” bubble = false}}>样本< / div>
我知道我可以做到:
< div class =“ card_header” onClick =“ window.location.href =('/ samples')”>但我想使用路由器路径.
提前致谢
解决方法:
问题是transitionTo在组件内部不可用.您有两个选择.您可以通过将代码修改为此来将操作传递到您的路线.
1.)在您的路线中创建一个动作来处理过渡,然后将该动作从组件中传递出去.跟进Ember的行动,降低数据的心态.
零件
import Component from '@ember/component';
export default Component.extend({
actions: {
goToSamples() {
//this passes the action to the components parent. It could be a route, other component, etc..
this.sendAction('transition');
}
}
});
路由template.hbs与组件
{{said-component transition='action-on-route'}}
route.js
...
actions: {
action-on-route: function(){
this.transitionTo('samples')
}
}
2.)您可以将路由服务注入该组件.这将使transitionTo通过路由服务对组件可用.我仍然建议选择一种,因为它使组件更具扩展性.
您的新组件代码.
import Component from '@ember/component';
import { inject }from '@ember/service';
export default Component.extend({
router: inject(),
actions: {
goToSamples() {
this.get('router').transitionTo('samples');
}
}
});
另外一个选项
我在编辑时就想到了这一点.如果您只需要进行转换,则也可以使用链接到帮助器.链接帮助器提供了更改tagName的功能.因此,您可以使用带有click事件的div来渲染,以使用链接到帮助器来转换路线.
示例component.hbs
...
{{#link-to 'samples' class='card_header' tagName='div'}}
Some html
{{/link-to}}
内容总结
以上是互联网集市为您收集整理的javascript-在EmberJS中重定向全部内容,希望文章能够帮你解决javascript-在EmberJS中重定向所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。