我正在使用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/

10-09 14:16