我在装置上做错了。 我必须建立契约有许多Contractitems的模型并尝试为它们加载灯具
App.Contract = DS.Model.extend({
contractItems: DS.hasMany('contractItem'),
//
});
App.ContractItem = DS.Model.extend({
contract: DS.belongsTo('contract'),
//
});
App.Contract.FIXTURES = [{
id: 1,
runtime: 12,
//
contractItems: [1, 2]
},{
id: 2,
//
}];
App.ContractItem.FIXTURES = [{
id: 1,
//
},{
id: 2,
//
}];
我评论了一些沉闷的attrubutes,但整个文件已经here。 当我加载页面时,我得到一个错误
Uncaught #<error> VM1615:956
ProfileManager.ended VM1615:956
Ember.subscribe.after VM1615:2007
finalizer ember-1.5.1.js:1802
Ember.tryCatchFinally ember-1.5.1.js:1554
Ember.Instrumentation.instrument ember-1.5.1.js:1810
Ember.CoreView.Ember.Object.extend.renderToBuffer ember-1.5.1.js:22472
Ember.View.Ember.CoreView.extend.createElement ember-1.5.1.js:23993
Ember.merge.insertElement ember-1.5.1.js:24944
Ember.View.Ember.CoreView.extend._insertElement ember-1.5.1.js:23921
DeferredActionQueues.flush ember-1.5.1.js:6125
Backburner.end ember-1.5.1.js:6215
Backburner.run ember-1.5.1.js:6254
executeTimers ember-1.5.1.js:6552
(anonymous function)
删除行contractItems: [1, 2]
可解决此问题,但显然未加载相关对象。
我想,我对camelcasing做了一些错误并尝试了不同的版本,但没有成功。
Ember用于版本1.5.1,Ember-Data用于版本1.0.0-beta9。
欢迎任何提示......
答案 0 :(得分:4)
您需要将关系定义为异步,因为它们不会加载到与您加载的记录相同的有效负载中。
App.Contract = DS.Model.extend({
contractItems: DS.hasMany('contractItem', {async:true}),
//
});
App.ContractItem = DS.Model.extend({
contract: DS.belongsTo('contract', {async:true}),
//
});
请记住在访问async属性时使用
contract.get('contractItems').then(function(items){
console.log(items.get('length'));
});