Неуловена #‹грешка› при зареждане на приспособления

Нещо не е наред с приспособленията. Трябва да моделирам, при които един договор има много елементи от договора, и да се опитам да заредя приспособления за тях

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,
  //
  }];

Коментирах някои скучни атрибути, но пълният файл е тук. Когато заредя страницата, получавам грешка

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.

Всякакви съвети са добре дошли...


person Informatom    schedule 04.06.2014    source източник


Отговори (1)


Вашите взаимоотношения ще трябва да бъдат определени като асинхронни, тъй като те не се зареждат в същия полезен товар като записа, който зареждате.

App.Contract = DS.Model.extend({
  contractItems: DS.hasMany('contractItem', {async:true}),
  //
});

App.ContractItem = DS.Model.extend({
  contract:       DS.belongsTo('contract', {async:true}),
  //
});

Не забравяйте, когато осъществявате достъп до асинхронни свойства, да използвате тогава

contract.get('contractItems').then(function(items){
  console.log(items.get('length'));
});
person Kingpin2k    schedule 04.06.2014