以下是我用来从Web API获取数据的代码。但每次我尝试检索数据时都会得到同样的错误:无法在ember.js 中设置未定义或空引用的属性'store'。
/// <reference path="Lib/ember.js" />
/// <reference path="Lib/ember-data.js" />
var App = Ember.Application.create();
Ember.onerror = function(e) {
alert(e);
};
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'api'
});
App.store = DS.Store.create({
adapter: App.ApplicationAdapter
});
App.Product = DS.Model.extend({
ID: DS.attr("int"),
Name: DS.attr('string'),
Category: DS.attr('string'),
});
App.ApplicationRoute = Ember.Route.extend({
model: function() {
{{debugger}}
var store1 = this.get("store")
var k = store1.find('product', 1)
return k;
}
});
答案 0 :(得分:2)
问题在于服务器返回的json。您需要返回以下对象:
{
product: {
// key value
}
}
如果您想使用DS.RESTAdapter默认值,您只需返回该格式的数据:
{
product: {
id: 1,
name: 'some name',
category: 'some category'
}
}
将模型映射更改为:
App.Product = DS.Model.extend({
name: DS.attr('string'),
category: DS.attr('string'),
});
如果您想使用Name
,Category
等大写的属性。您需要覆盖DS.RESTAdapter的某些方法。如果您的endpoing与此格式不匹配。
其他错误是DS.attr('int')
仅DS.attr('number')
不存在。但您可以删除id映射,因为默认情况下会创建。
答案 1 :(得分:0)
App.Store = DS.Store.extend({
adapter: App.ApplicationAdapter
});
请注意S
和Store
中的大写extend
,而不是create
。