Как удалить элементы в массиве содержимого 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
});