RESTAdapter不与Ember合作

时间:2014-11-14 17:47:55

标签: javascript ember.js ember-data

我正在使用Ember并尝试从我的REST API中检索数据,但它无法按预期工作。首先,我不确定如何调试RESTAdapters,其次我没有看到在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?

2 个答案:

答案 0 :(得分:3)

您似乎使用旧的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

答案 1 :(得分:1)

关于调试Ember,检查标签wiki:https://stackoverflow.com/tags/ember.js/info 显示以下链接: Debugging Ember

这可能会有所帮助。