【发布时间】:2016-07-29 10:12:42
【问题描述】:
对于 ember 来说很新很抱歉,如果有任何愚蠢的话,我试图在 ember 中创建一个自定义适配器和序列化器,通过扩展 DS.RESTadapter 和 Rest 序列化器,我成功地获得了响应并按摩数据以适应模型需要,但是我无法使用模型属性获取模板中的模型值,但是我有一种获取值的方法,请您以正确的方式帮助我
型号
App.Weather = DS.Model.extend({
name : DS.attr('string'),
temperature : DS.attr('string'),
humidity : DS.attr('string'),
description : DS.attr('string'),
});
适配器
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');
}
});
序列化器
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);
}
});
路线
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]);**
}
})
如上所述,我正在获取 model.Content Array 下的所有值。
不理解你我将不得不做 model.content 而不仅仅是模型。以及它为什么会这样嵌套自己。
我使用的是旧版本的 ember ember-1.1.2.js
【问题讨论】:
-
你不需要在 setupController 钩子中设置模型属性。因为这将由父控制器自动设置。确保你应该调用 this._super(..arguments)
-
有关嵌套适配器的信息,请参阅:幻灯片 (slideshare.net/RyanMHarrison/nest-v-flat-with-emberdata) 和/或视频 (youtube.com/watch?v=DjAMSjFPLW8)
标签: ember.js ember-data ember-cli