我试图找出如何使用Ember Data获取数据并进行渲染。在遇到几个问题后,我得到了这一点,我在控制台上没有出现任何错误,但是在加载数据后存储空了。
window.App = Ember.Application.create();
App.IndexRoute = Ember.Route.extend({
model: function(){
return this.store.find('games');
}
});
App.GamesModel = DS.Model.extend({
name: DS.attr('string')
});
App.GamesAdapter = DS.RESTAdapter.extend({
host: 'http://private-0f6a1-ember37.apiary-mock.com'
});
App.GamesSerializer = DS.RESTSerializer.extend({
normalizePayload: function(payload){
var result = { games: payload };
return result;
}
});
这是模板:
<script type="text/x-handlebars" data-template-name="index">
<ul>
{{#each model}}
<li>{{name}}</li>
{{/each}}
</ul>
</script>
以下是CodePen上代码的链接:http://codepen.io/tarmann/pen/GJMJxq
我也尝试了不同版本的Ember Data和Ember,但没有运气。
答案 0 :(得分:1)
您的问题是多元化:您指定GamesModel
而不是GameModel
,find
games
而不是game
等。我将所有这些更改为与Ember期望的一致(您可以在指南中阅读更多关于Ember标准的内容)和it works, CodePen:
App.IndexRoute = Ember.Route.extend({
model: function(){
return this.store.find('game');
}
});
App.GameModel = DS.Model.extend({
name: DS.attr('string')
});
App.GameAdapter = DS.RESTAdapter.extend({
host: 'http://private-0f6a1-ember37.apiary-mock.com'
});
// https://www.youtube.com/watch?v=HL2bMjndviE
App.GameSerializer = DS.RESTSerializer.extend({
normalizePayload: function(payload){
var result = { games: payload };
return result;
}
});
App.IndexController = Ember.Controller.extend({
init: function(){
this.store.push('game', {
id: 100,
name: "Added from controller"
});
}
});
结果截图: