2012-06-07 17 views
7

¿Cuál es la mejor manera de crear una matriz de objetos de brasas a partir de una matriz de objetos json?Ember.js cómo cargar una matriz de objetos de brasas simples

puedo usar SetProperties en cada objeto individual como esto:

var ret = Ember.A(); 

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

Pero hay una manera de obtener una línea el mismo resultado?

Respuesta

7

que había map en lugar de utilizar forEach:

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

¿Hay alguna manera de iterar a través de los objetos? – NkS

1

Sí:

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

Esto no tiene el mismo resultado. 'create' tiene un significado diferente que' setProperties'. – ebryn

+0

Es cierto, pero sin contexto completo, no estoy seguro de que suponga una gran diferencia, ya que no sabemos si esos objetos estarán vinculados o no posteriormente. De ser así, el costo general se pagaría en el enlace. Pero es interesante tener esta sutil diferencia subrayada. Thks. :) –

+0

En realidad, la principal diferencia es que si usas setProperties se invocarán las entidades de creación calculadas. Con create, se sobrescribirán. – ebryn

0

Yo uso este en mi entrenamiento-aplicación para obtener JSON desde un servidor remoto y analizarlo a matriz de objetos .

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) 
Cuestiones relacionadas