javascript sproutcore ember.js

javascript - ¿Cómo hacer push/pop arrays en Ember.js?



sproutcore (2)

Para trabajar con colecciones, Ember.js proporciona una clase de contenedor Array, Ember.Array / Ember.MutableArray

Por lo tanto, en lugar de utilizar una matriz simple, use estos:

// JS App.obj = Ember.Object.create({ "things": Ember.A(["1", "2"]) }); App.obj.things.pushObject("3"); // pushObject notifies observers // HTML + Handlebars {{#with App.obj}} <ul> {{#each things}} <li>{{this}}</li> {{/each}} </ul> {{/with}}

Puedo incluir una matriz en un objeto Ember y mostrar el contenido usando Handlebars. Sin embargo, solo puedo reemplazar los contenidos de la matriz usando set (). ¿Cómo puedo modificar los contenidos de la matriz usando push / pop / etc. y todavía tienen la actualización de enlaces UI?

// JS App.obj = Ember.Object.create({ "things": ["1", "2"], }); App.obj.set("things", ["1", "2", "3"]); // Works App.obj.things.push("3"); // Doesn''t Work // HTML + Handlebars {{#with App.obj}} <ul> {{#each things}} <li>{{this}}</li> {{/each}} </ul> {{/with}}


Use una instancia de Ember.ArrayController, simplemente declarar una matriz con [] también creará una matriz de la clase Ember.ArrayController.

Si desea agregar un objeto al final de Ember ArrayController, puede usar el método addObject ();

p.ej.

mutableArray:[], setModel:function(){ var data1={''id'':1,''name'':''over''}; var data2={''id'':3,''name'':''out''}; this.get(''mutableArray'').addObject(data1); this.get(''mutableArray'').addObject(data2); /* To Add Object to middle of array at given index simply use the native array splice method */ var data1={''id'':2,''name'':''and''} this.get(''mutableArray'').splice(1,0,data1); return this.get(''mutableArray'') }.property(''mutableArray'')