2016-07-29 8 views
0

Sehr neu zu ember Entschuldigung, wenn Dummheit, ich versuchte, einen benutzerdefinierten Adapter und Serializer in Ember, durch Erweitern von DS.RESTadapter, und Rest Serializer zu erstellen, war es mir gelungen, die Antwort und Massieren Sie die Daten, um den Modellanforderungen zu entsprechen, aber ich konnte die Modellwerte in der Vorlage nicht mithilfe der Modelleigenschaft abrufen, aber ich habe eine Möglichkeit, die Werte abzurufen, um Sie auf die richtige Weise zu unterstützen.Ember-Daten für Nicht-Standard-Ruhe-Anrufe

Modell

App.Weather = DS.Model.extend({ 
    name : DS.attr('string'), 
    temperature : DS.attr('string'), 
    humidity : DS.attr('string'), 
    description : DS.attr('string'), 
}); 

Adapter

App.ApplicationAdapter = DS.RESTAdapter.extend({ 

    buildURL: function(item) { 
     return "http://website/weather?q=" + item['q']+ "&appid="+item['appid']; 
    }, 

    findQuery: function(store, type, query) { 
     return this.ajax(this.buildURL(query), 'GET'); 
    } 
}); 

Serializer

App.ApplicationSerializer = DS.RESTSerializer.extend({ 

    extractArray: function(store, type, payload) { 
     var weathers = [{ 
      id: 1 // Id hard coded 
     }]; 


     weathers[0]["name"]=payload["name"]; 
     weathers[0]["temperature"]=payload["main"]["temp"]; 
     weathers[0]["humidity"]=payload["main"]["humidity"]; 
     weathers[0]["description"]=payload["weather"][0]["description"]; 
     weathers[0]["type"]=payload["weather"][0]["main"]; 

     payload = { weathers: weathers }; 

     return this._super(store, type, payload); 
    } 
}); 

Strecke

App.WeatherIndexRoute = Ember.Route.extend({ 
    model: function(params) { 
     //debugger; 
     return this.store.find('weather',{q:"London", `enter code here`appid:"b552aef423b1cf586b62d1ab1d4ef216"}); 

    }, 
    renderTemplate: function() { 
     this.render('default'); 
    }, 
    setupController: function(controller, model) { 

     **controller.set('model', model.content[0]);** 
    } 
}) 

As Above ich alle Werte unter model.Content Array bin immer.

Nicht verstehen y ich hätte model.content statt nur Modell zu tun. und warum würde es sich so nisten?

Ich verwende eine ältere Version von Ember glut-1.1.2.js

+0

Sie müssen die Modelleigenschaft in setupController hook nicht festlegen. da dies automatisch vom übergeordneten Controller festgelegt wird. Stellen Sie sicher, dass Sie this._super (.. arguments) aufrufen sollten. – kumkanillam

+0

Informationen zu verschachtelten Adaptern finden Sie unter: Slides (http://www.slideshare.net/RyanMHarrison/nest-v-flat-with-emberdata) und/oder Video (https://www.youtube.com/watch?v=DjAMSjFPLW8) – rmharrison

Antwort

0

Wenn Sie Ember versuchen zu lernen, keine Version verwenden, für die Sie keine Dokumentation finden. Wenn Sie Version 2.x nicht verwenden können, laden Sie 1.13 herunter. Der einfachste Weg, wie man nicht standardmäßige REST-Antworten behandelt, ist das Ändern der normalize() -Methode [http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_normalize], die jede Antwort verwenden sollte, die Sie haben, und JSON in einem Format erstellen, das von Ihrem Serializer benötigt wird.

Verwandte Themen