加载灯具时未捕获#<error> </error>

时间:2014-06-04 10:29:42

标签: ember.js ember-data fixtures

我在装置上做错了。 我必须建立契约有许多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。

欢迎任何提示......

1 个答案:

答案 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'));
});