我一直在尝试与我在 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 中找到了它,但似乎我最终离解决方案更远了。
大多数其他实现给我一个错误,告诉我没有这样的方法find
或findAll
.
编辑(解决方案) 经过很多来回,我设法让它工作。
我不确定究竟是哪一步修复了它,但我包含了来自网络的最新版本(而不是本地),源代码现在看起来像这样:
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()
});