2012-01-26 12 views
5

Tutti gli esempi utilizzano l'origine dati fissa nell'arraycontroller.content, mentre sto utilizzando l'origine dati dinamica generata da un altro servizio Web e restituisce un JSON, non lo farà creare un oggetto che ho dichiarato in Ember, ecco il codice di esempio:Come associare il contenuto a JSON in Ember.js

 ET.AppYear = Ember.Object.extend({ 
      text:null, 
      value:null 
     }); 
     ET.EmailTypes = Ember.Object.extend(); 

     ET.appYearController = Ember.ArrayController.create({ 
      content: [], 
      loadYears: function (year) { 
       if (year != null) { 
        for (var i = -5; i < 5; i++) { 
         this.pushObject({ text: year + i, value: year + i }); 
         //.AppYear.create({ text: year + i, value: year + i }); 
        } 
       } 
      } 
     }); 

     ET.selectedAppYearController = Ember.Object.create({ 
      selectedAppYear: '2011', 
      alertChange: function(){ 
       alert("selected App Year is now " + this.get('selectedAppYear')); 
      }.observes('selectedAppYear'), 
      isChanged: function() { 
       if (this.appYear != null) { 
        this.set('selection',this.get('content')); 
        //LoadETByAppYearETTypeID(this.selectedAppYear, ET.selectedEmailTypesController.emailType.email_template_type_id); 
       } 
      } .observes('selectedAppYear'), 
      AppYear: function() { 
       var ay = ET.appYearController.findProperty('text',this.get('selectedAppYear')); 
       return ay; 
      }.property('selectedAppYear')     
     }); 

Come si può vedere, che chiamerò ET.appYearController.loadYears (JSON) in un posto AJAX indietro, che creerà il contenuto utilizzando this.pushObject, ma questo non è lo schema dell'oggetto ET.AppYear, mentre chiamo ET.selectedAppYearController.selectedAppYear, restituisce un oggetto non definito e restituisce realmente un oggetto con lo schema {text:xx,value,xx}. Ecco perché anche in questo caso lo selectionBinding non funzionerà.

Quindi qual è la soluzione tipica per questo per importare elementi JSON come oggetto definito e inserire nel contenuto ?!

risposta

5

[2014-02-19: Obsoleto: non supporto più il riposo a riposo perché è eccessivamente semplicistico e consiglierei di utilizzare i dati di ember per la maggior parte dei progetti ember. Scopri the Ember guides per una panoramica of Ember-dati così come questo example project]

ho creato un semplice libreria per gestire lavorare con le interfacce REST da Ember: https://github.com/cerebris/ember-rest

Sto anche scrivendo un serie di post sull'utilizzo di questa libreria da Rails. Il primo è qui: http://www.cerebris.com/blog/2012/01/24/beginning-ember-js-on-rails-part-1/

Il mio prossimo post, spero che arrivi più tardi oggi, si occupi precisamente del caricamento dei dati tramite AJAX in una raccolta di oggetti Ember. Per ora, puoi vedere questo comportamento nell'app di esempio e nel readme ember-rest.js.

Se si desidera evitare l'uso di questa libreria, è comunque possibile controllare la fonte. Il metodo deserialize() su Ember.Resource viene utilizzato per importare JSON e può anche essere utilizzato con un Ember.Object generico.

7

Date un'occhiata alla biblioteca Ember-dati, è stato fatto per il vostro caso d'uso e dei relativi casi d'uso:

https://github.com/emberjs/data

+1

Ember-dati non è pronto per la produzione – Gambo

+1

Ember dati è ancora in beta , ma viene utilizzato nelle applicazioni di produzione. –

Problemi correlati