【发布时间】:2013-09-07 07:46:09
【问题描述】:
据我了解,控制器用于装饰数据或添加任何不属于模型(服务器)的数据。但是,我正在尝试了解如何将显示数据添加到模型数据中,以便我可以传递给 ember.js 中的模板
以下是代码示例。可能有更好的方法来做到这一点,但也许我让它变得更加困难。
当用户点击 div 时,我希望添加一个新的 css 'select' 类,以便点亮 div。
动作
- 用户点击 div
- userSelect 操作被触发,并且在控制器中 isSelected 设置为 true。这将更新模板并附加 'selected' 标记到类属性导致 div 为 已更新。
问题:
- 我想为模型中的每个用户添加一个显示属性 isSelected,而不仅仅是像我现在所做的那样添加到模型中。这可能吗?
- 目前,根据其实现方式,“已选择”标签仅在 isSelected = false 时才会显示。要么是逻辑相反,要么 isSelected 绑定到新值的顺序发生在模板渲染之后。
user.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",
}
]
UserListController.js
App.UserListController = Ember.ArrayController.extend({
isSelected: false,
userSelect: function(userId){
this.set('isSelected', true);
console.debug(userId + " isSelected:" + this.get('isSelected'));
}
});
index.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
【问题讨论】:
标签: model ember.js controller