我正在尝试在绑定到模型的输入上设置属性,但我不知道如何使用这个单个元素。这是我的控制器动作:
acceptEdit: function(item) {
items = this.get('items')
items.toArray().forEach(function(item){
item.set('isEditing', false);
});
items.save();
}
项目属于某个类别。这是分类模型:
App.Category = DS.Model.extend({
title: DS.attr('string'),
items: DS.hasMany('item'),
itemCount: function() {
return this.get('items.length');
}.property('items.@each')
});
因此,当调用acceptEdit时,我可以获取当前路线的类别的所有项目,但我无法弄清楚如何获得正在编辑的确切项目。因此,我的优雅代码只是循环遍历所有要设置的项目,即编辑'为假。 Clobbering有效,但并非理想:\
我有办法获得个别项目吗?
答案 0 :(得分:3)
您实际上只有两个选项:搜索数组,或存储当前正在编辑的数组。如果您不想存储正在编辑的对象,只需使用findBy方法获取正在编辑的对象。
var items = this.get('items');
var editingItem = items.findBy('isEditing', true);
// I use tryInvoke in case one isn't found. That might not be possible for you.
Ember.tryInvoke(editingItem, 'set', ['isEditing', false]);