据我了解,控制器用于装饰数据或添加任何不属于模型(服务器)的数据。但是,我试图了解如何将显示数据添加到模型数据中,以便我可以传递给 ember.js 中的模板
下面是代码示例。可能有更好的方法来做到这一点,但所以也许我让它变得比它需要的更困难。
当用户单击 div 时,我希望添加一个新的 css 'select' 类,以便它点亮 div。
行动
- 用户点击 div
- userSelect 动作被触发,并且在控制器中 isSelected 被设置为 true。这将更新模板并将“选定”标签附加到类属性,从而更新 div。
问题:
- 我想为模型中的每个用户添加一个显示属性 isSelected 而不仅仅是像我现在所做的那样添加到模型中。那可能吗?
- 目前,通过其实现方式,仅当 isSelected = false 时才会显示“选定”标签。要么是逻辑相反,要么 isSelected 绑定到新值的顺序发生在模板渲染之后。
用户.js
App.User = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string')
});
App.User.FIXTURES =
[
{
id: 1,
firstName: 'Derek',
lastName: "H",
},
{
id: 2,
firstName: 'Test',
lastName: "H",
}
]
用户列表控制器.js
App.UserListController = Ember.ArrayController.extend({
isSelected: false,
userSelect: function(userId){
this.set('isSelected', true);
console.debug(userId + " isSelected:" + this.get('isSelected'));
}
});
索引.html
<script type="text/x-handlebars" id="userList" data-template-name="userList">
{{#each controller}}
<div {{bindAttr class="isSelected:selected:notselected"}} {{action userSelect id}}>
</div>
{{/each}}
</script>
我意识到我可以只操作 DOM 并附加类,但我想知道您将专门针对 ember 执行此操作的正确方法。
任何建议表示赞赏,谢谢 D