在Ember的最新版本(1.10+)中,似乎有一种趋势是使用组件而不是控制器和视图。
The wisdom seems to be: "仅使用顶级控制器接收路由数据,并使用Ember.Controller而不是Ember.ArrayController或Ember.ObjectController"
这对我来说很有意义,因为创建可重用组件很酷,但在某些情况下我不清楚适当的方法是什么。
假设我们有一个表示表中一行的组件,如下所示:
# entry-row.js component
import Ember from 'ember';
export default Ember.Component.extend({
tagName: 'tr',
actions: {
toggleResolving: function() {
this.toggleProperty('resolving');
}
},
isChecked: function() {
return this.get('resolving');
}.property('resolving')
});
# entry-row.hbs template
<td {{action "toggleResolving"}}>{{entry.name}}</td>
<td>{{entry.currency.symbol}}{{entry.amount}}</td>
<td>{{entry.date}}</td>
<td class="bs-checkbox">{{input type="checkbox" checked=isChecked class="toggle"}}</td>
为了形成表格,使用了许多相同的组件。太棒了。如果存在一些仅适用于该行的非持久状态,则该属性可以属于该组件并在那里进行更改。类似的东西:
actions: {
toggleResolving: function() {
this.toggleProperty('resolving');
}
}
但是说我的resolving
属性在组件外部也很有用。在这种情况下,我希望能够标记多行以进行解析,然后集体对它们执行某些操作。我相信在切换到组件之前,我会在Controller上定义resolving
属性,并在需要模型+状态的任何地方使用该控制器。
我还应该把它放在控制器上吗?
答案 0 :(得分:0)
除了使用外部组件外,另一个选择是在模型上放置属性。您还可以与mixin分享常见的操作。