我想要一个动态创建的link-to
(一个自定义的半后退按钮)。此链接显示在application.hbs
中,并在某些路径更改时更改。我通过发送带有link-to
参数信息的事件来完成此任务:
// in patient-route.js
afterModel: function(model) {
this.send('setHeader', {text: model.get('fullName'), linkTo: 'patient', args: [model.get('id')]});
}
和
// in application-route.js
actions: {
setHeader: function(linkTo) {
linkTo.url = this.router.generate(args.back.route);
this.set('headerLinkTo', linkTo);
},
fakeLinkTo: function(linkTo) {
this.transitionTo.apply(this, linkTo.args.unshift(linkTo.linkTo));
}
}
模板看起来像
<a {{bind-attr href=headerLinkTo.url}} {{action 'fakeLinkTo' headerLinkTo}}>{{headerLinkTo.text}}</a>
这很笨拙,但目前正在工作。这不支持活动状态(虽然不是我需要的)但是如果这更容易做的话会很好(加上我很确定我不应该像这样使用路由器)。
似乎类似的问题在生成link-to
的组件中悄悄上升(例如:http://ember-addons.github.io/bootstrap-for-ember/#/show_components/tabs-with-routes - 无法传递动态段)。
有什么更好的方法可以做到这一点,或者有什么可以做到的?