我一直在尝试设置一个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中找到它,但似乎我最终离解决方案更远。
大多数其他实现都给我一个错误,告诉我没有这样的方法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()
});
答案 0 :(得分:0)
您遇到的错误可能是因为您添加了“s”个复数对象。
即如果您使用
App.Planets = DS.Model.extend({
})
你会得到那个错误。