Как удалить элементы в массиве содержимого ArrayController (Ember)

У меня есть модель вроде:

TestModel = Em.Object.create({
    id:'',
    name:''
})

и объект ArrayController как:

testArrayController = Em.ArrayController.create({
    content: [],
    init: function() {
        //push some object TestModel
    }
});

Я хочу, чтобы некоторые объекты зависели от свойства id объекта в массиве содержимого. Как это сделать?

Ответ 1

Я бы использовал комбинацию findProperty и removeObject, см. http://jsfiddle.net/pangratz666/rXN4E/:

App.testArrayController = Em.ArrayController.create({
    content: [],

    removeItem: function(propName, value){
        var obj = this.findProperty(propName, value);
        this.removeObject(obj);
    }
});

App.testArrayController.removeItem('id', 42);

Ответ 2

У меня была ситуация, когда у меня была таблица с флажком рядом с каждой строкой.

Я хотел удалить каждую строку, которая была выбрана при нажатии кнопки.

Каждый флажок привязан к свойству isSelected в контроллере элемента.

Я использовал removeObjects и функции filterProperty для удаления элементов:

this.removeObjects(this.filterProperty('isSelected'));

Ниже приведен пример jsbin.

Это важные бит:

App.IndexController = Ember.ArrayController.extend({
  itemController: 'IndexItem',
  actions: {
    removeSelected: function() {
      this.removeObjects(this.filterProperty('isSelected'));
    }
  }
});

App.IndexItemController = Ember.ObjectController.extend({
  isSelected: true
});