Ember.js与孩子的单个成员一起工作

时间:2014-11-22 18:58:47

标签: javascript ember.js

我正在尝试在绑定到模型的输入上设置属性,但我不知道如何使用这个单个元素。这是我的控制器动作:

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有效,但并非理想:\

我有办法获得个别项目吗?

1 个答案:

答案 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]);