构建必须在Ember中删除自身的组件列表

时间:2015-10-09 04:33:07

标签: javascript ember.js

我不确定这是否属于SO,因为它更多的是关于设计而不是编程。

我有一组模型,每个模型都有一个相应的组件。组件可以删除其模型。但是,删除模型时,也应该从数组中删除它们。

以下是我处理此问题的两种方法:

{{#each item in items}}
  {{item-row item=item items=items}}
{{/each}}

在这种情况下,我将整个数组传递给子组件。子组件可以从items数组中删除自己的项目。

这是第二种方式:

{{#each item in items}}
  {{item-row item=item removeItem="removeItem"}}
{{/each}}

此处,子组件发送removeItem操作。当父组件收到removeItem操作时,它会从数组中删除该项。

在Ember中哪个更好的方法呢?还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我肯定会推荐第二种方法,在组件上使用removeItem操作。它更干净,你的项目行组件不需要知道其他项目,为什么要这样呢?此外,这意味着每次更改items时都不会更新,因此效率会稍高一些。

解决此问题的最佳方法是在调用removeItem时传递该组件的项目。

this.sendAction('removeItem', this.get('item'));

然后,您只需处理控制器上removeItem操作中的数组中的项目。

removeItem: function(removedItem) {
  // As items is an array, iterate through it and remove the removedItem
  var updatedItems = this.get('items').filter(function(item) {
    return item.get('id') !== removedItem.get('id');
  });
  this.set('items', updatedItems);
}

希望有所帮助!