我预计未来可路由的组件何时会出现控制器的终结。所以我一直把我的行动处理程序放在我的路线上。
// app/something/route.js
actions: {
doSomething() {
alert('action handled in route');
}
}
在我的模板中:
{{!-- app/something/template.hbs --}}
{{some-component action="doSomething"}}
在我的组件中:
{{!-- app/components/some-component/template.hbs --}}
<button {{action "onClickButton"}}>Click Me</button>
// app/components/some-component/component.js
actions: {
onClickButton() {
this.sendAction();
}
}
我是否应该在路线中处理行动并完全避开控制器?
答案 0 :(得分:2)
由于来自Ember学习团队的@locks的输入,控制器似乎不消失。
面向未来并不意味着永远不会使用任何控制器。
和
为您的所有路线生成控制器。
您甚至可以在trek
git commit中看到Ember团队正在软化他们对控制器的立场。
因此,最后,控制器可以正常使用。这就是我采取行动的地方。
答案 1 :(得分:1)
这是我用来暂时解决这个问题的非常棒的方法:
https://github.com/DockYard/ember-route-action-helper
关于理由的完整记录在这里(https://dockyard.com/blog/2016/02/19/best-practices-route-actions),关键点是:
"This addon gives you all the goodness of closure actions, and is a great way of taking steps to future proof your Ember application. When Routable Components do land, and actions work correctly, then upgrading your app simply becomes a search and replace for s/route-action/action."