0

我一直在尝试与我在 Laravel 中创建的Ember.js应用程序一起设置应用程序。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()
});
4

1 回答 1

0

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

如果你使用

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

你会得到那个错误。

于 2013-10-18T05:04:35.023 回答