2012-06-07 5 views
7

Wie kann man ein Array von Ember-Objekten am besten aus einem Array von Json-Objekten erstellen?Ember.js Wie man ein Array einfacher Ember-Objekte lädt

kann ich SetProperties auf jedes einzelne Objekt wie folgt verwenden:

var ret = Ember.A(); 

pojos.forEach(function(obj){ 
    var em = Ember.Object.create({}); 
    emCluster.setProperties(obj); 
    ret.push(emCluster); 
}); 

Aber gibt es eine eine Zeile Weg, um das gleiche Ergebnis zu erhalten?

Antwort

7

würde ich map statt forEach verwenden:

pojos.map(function(obj){ 
    return Ember.Object.create().setProperties(obj); 
}); 
+0

Gibt es eine Möglichkeit, durch Objekte zu iterieren? – NkS

1

Yep:

var ret = pojos.map(function(data) { return Ember.Object.create(data); }); 
+0

Dies hat nicht das gleiche Ergebnis. 'create' hat eine andere Bedeutung als' setProperties'. – ebryn

+0

Richtig, aber ohne vollen Kontext, nicht sicher, ob es einen großen Unterschied machen würde, da wir nicht wissen, ob diese Objekte später gebunden werden oder nicht. Wenn dies der Fall ist, würden die Overhead-Kosten bei der Bindung bezahlt werden. Aber interessant, diesen subtilen Unterschied unterstreichen zu lassen. Thks. :) –

+0

Eigentlich ist der Hauptunterschied, dass, wenn Sie setProperties verwenden, berechnete Eigenschaft Setter aufgerufen werden. Mit create würden sie überschrieben werden. – ebryn

0

ich dies in meinem Training-App json von Remote-Server und analysieren sie Array von Objekten zu erhalten .

App.Model.reopenClass({ 
    allItems: [], 
    find: function(){ 
    $.ajax({ 
     url: 'http://remote_address/models.json', 
     dataType: 'json', 
     context: this, 
     success: function(data){ 
     data.forEach(function(model){ 
      this.allItems.addObject(App.Model.create(model)) <------------------- 
     }, this) 
     } 
    }) 
    return this.allItems; 
    }, 
}); 
0
ret = (Em.Object.create pojo for pojo in pojos) 
Verwandte Themen