web-dev-qa-db-fra.com

Comment faire pour pousser/pop des tableaux dans Ember.js?

Je peux inclure un tableau dans un objet Ember et en afficher le contenu à l'aide de Handlebars. Cependant, je ne peux remplacer le contenu du tableau qu'avec set (). Comment puis-je modifier le contenu du tableau en utilisant Push/pop/etc. et avez-vous toujours les liaisons d'interface utilisateur mises à jour?

// 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}}
35
Luke Dennis

Pour utiliser les collections, Ember.js fournit une classe d’enveloppe Array, Ember.Array/Ember.MutableArray.

Donc, au lieu d’utiliser un tableau simple, utilisez ce qui suit:

// 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}}
68
Michael Siebert

Utilisez une instance de Ember.ArrayController, la simple déclaration d'un tableau avec [] créera également un tableau de la classe Ember.ArrayController.

Si vous souhaitez ajouter un objet à la fin de Ember ArrayController, vous pouvez utiliser la méthode addObject ().

par exemple. 

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')
0
Mad Scientist