2012-05-29 18 views

Respuesta

19

me gustaría utilizar una combinación de findProperty y removeObject, ver 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); 
+4

FYI: esto no funcionará si está utilizando Ember datos para recuperar los datos para el controlador - la matriz es inmutable. – outside2344

+0

@ outside2344: Creo que depende si recuperas los datos de la tienda con find o filter. Si lo encuentras por find, funciona y luego es realmente necesario ... – Preexo

4

que tenían una situación en la que tenía una mesa con una casilla de verificación junto a cada fila.

Quería eliminar cada fila que se había seleccionado cuando se hizo clic en un botón.

Cada casilla estaba vinculada a una propiedad isSelected en el controlador del elemento.

he utilizado la removeObjects y filterProperty funciones para eliminar los elementos:

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

que aquí hay una jsbin con un ejemplo.

Estas son las partes importantes:

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

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