我正在使用Ember,并尝试从我的REST API检索数据,但是它没有按预期工作。首先,我不确定如何调试RESTAdapter,其次,我看不到Chrome Devtools网络视图中的调用。
HTML:
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.3.0/handlebars.min.js"></script>
<script src="http://builds.emberjs.com/release/ember.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ember-data.js/1.0.0-beta.11/ember-data.js"></script>
这是我的JS:
App = Ember.Application.create();
App.Store = DS.Store.extend({
adapter: DS.RESTAdapter.extend({
host: 'http://example.com/api'
})
});
App.Bodypart = DS.Model.extend({
name: DS.attr('string')
});
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return App.Bodypart.find();
}
});
我的控制台返回:
Error while processing route: index undefined is not a function TypeError: undefined is not a function
我知道这意味着我显然要返回一些空指针或空模型。
所以问题来了,我该如何调试RESTAdapter?
最佳答案
您似乎正在使用旧的ember-data语法并将其应用于1.0beta11。我目前没有链接,但请查看官方存储库或指南。您路线中的model
钩子应更改为:
return App.Bodypart.find();
至
return this.store.find('bodypart');
另外,您似乎也错误地声明了适配器。它应该是:
App.ApplicationAdapter = DS.RESTAdapter.extend({
host: 'http://example.com',
namespace: 'api'
});
另外,请考虑将请求从
ApplicationRoute
更改为子路由,否则您可能会遇到“假冻结”应用程序,如here所示关于javascript - RESTAdapter不适用于Ember,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26935940/