ember.js无法设置undefined的属性'store'

时间:2013-09-18 21:54:44

标签: ember.js undefined store

我一直在尝试设置一个Ember.js应用程序以及我在Laravel中创建的RESTful API

我在尝试通过商店获取数据时遇到了问题,并且根据我的实现,我得到了不同的错误,但从来没有任何有效的实现。

ember.js指南有一个示例,其他地方有其他示例,我发现的大部分信息都已过时。

这是我目前的代码:

App = Ember.Application.create();


App.Router.map(function() {
    this.resource("world", function() {
        this.resource("planets");
    });
});

App.PlanetsRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('planet');
    }
});

App.Planet = DS.Model.extend({
    id: DS.attr('number'),
    name: DS.attr('string'),
    subjectId: DS.attr('number')
});

当我尝试点击行星的链接时,那就是错误发生时,我现在收到以下错误:

Error while loading route: TypeError {} ember-1.0.0.js:394
Uncaught TypeError: Cannot set property 'store' of undefined emberdata.js:15

根本没有为/ planets发送任何请求。我使用了$ .getJSON,但我想尝试实现默认的ember-data RESTAdapter。

作为参考,这些是我尝试过的一些实现:

var store = this.get('store'); // or just this.get('store').find('planet')
return store.find('planet', 1) // (or findAl()) of store.findAll('planet');


App.store = DS.Store.create();

我也尝试DS.Store.all('planet'),因为我在ember.js api中找到它,但似乎我最终离解决方案更远。

大多数其他实现都给我一个错误,告诉我没有这样的方法findfindAll

编辑(解决方案) 经过很多的反复和前进,我设法让它发挥作用。

我不确定究竟是哪一步修复了它,但我包含了网上提供的最新版本(而不是本地版本),而源代码现在看起来像这样:

window.App = Ember.Application.create();

App.Router.map(function() {
    this.resource("world", function() {
        this.resource("planets");
    });
});

App.PlanetsRoute = Ember.Route.extend({
    model: function() {
        return this.store.findAll('planet');
    }
});

App.Planet = DS.Model.extend({
    name: DS.attr(),
    subjectId: DS.attr()
});

1 个答案:

答案 0 :(得分:0)

您遇到的错误可能是因为您添加了“s”个复数对象。

如果您使用

App.Planets = DS.Model.extend({
})

你会得到那个错误。