Ember 2.5中的操作 - 路由或控制器?

时间:2016-05-20 20:44:35

标签: ember.js

我预计未来可路由的组件何时会出现控制器的终结。所以我一直把我的行动处理程序放在我的路线上。

// 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();
    }
}

我是否应该在路线中处理行动并完全避开控制器?

2 个答案:

答案 0 :(得分:2)

由于来自Ember学习团队的@locks的输入,控制器似乎消失。

根据his blog post

  

面向未来并不意味着永远不会使用任何控制器。

  

为您的所有路线生成控制器。

您甚至可以在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."