2012-06-07 13 views
7

Qual è il modo migliore per creare una matrice di oggetti ember da una serie di oggetti JSON?Ember.js come caricare un array di semplici oggetti ember

posso usare SetProperties su ogni singolo oggetto in questo modo:

var ret = Ember.A(); 

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

Ma c'è un modo per ottenere una linea lo stesso risultato?

risposta

7

avrei map invece di utilizzare forEach:

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

C'è un modo per scorrere gli oggetti? – NkS

1

Yep:

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

Questo non ha lo stesso risultato. 'create' ha un significato diverso da' setProperties'. – ebryn

+0

Vero, ma senza un contesto completo, non sono sicuro che farebbe una grande differenza, in quanto non sappiamo se questi oggetti saranno successivamente vincolati o meno. In tal caso, i costi generali sarebbero pagati al vincolante. Ma interessante per sottolineare questa sottile differenza. Thks. :) –

+0

In realtà, la differenza principale è che se si utilizzano setProperties, verranno chiamati i setter delle proprietà calcolate. Con la creazione, sarebbero stati sovrascritti. – ebryn

0

Io uso questo nella mia formazione-app per ottenere JSON dal server remoto e analizzarlo a matrice di oggetti .

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) 
Problemi correlati