2015-09-15 3 views
0

Я обновил данные Ember до версии 1.13.12 и получил некоторые проблемы с моими старыми источниками.непонимание изменений ember в «Ember Data: 1.13.12»

Пример:

У меня есть код

this.store.find('user', params).then(function(results) { 
    self.get('experts').addObjects(results); // add users to 'experts' filed in controller 
    }); 

В "Ember данных: 1.13.12" ниже код не работает, падение с ошибкой:

"TypeError: Object [object Object] has no method 'getRecord'" 

Решение, которое я нашел

self.get('experts.content').addObjects(results.get('content')); 

Следующая проблема:

return this.store.query('review', {'expert_id': expertId}).then(function(data){ 
     data.get('content').forEach(function(item) { 
      item.set('currentUser', self.modelFor('e')); 
     }); 
     return data; 
    }); 

item был объектом Class и теперь это объект DS.INTERNALMODEL, который не содержит set метод

Из отладчика я нашел решение:

item.record.set('currentUser', self.modelFor('e')); 

ВОПРОС: Все мое решение выглядит нехорошо, что изменилось в новых данных ember? Какова наилучшая практика для решения этих проблем?

Я читал журнал изменений и не нашли какой-либо информации, которые относятся к моим проблемам

+0

Некоторая информация может быть найдена в блоге ember: http://emberjs.com/blog/2015/06/18/ember-data-1-13-released.html#toc_simplified-find-methods –

ответ

0

Вы должны быть в состоянии использовать forEach на data вместо data.content поскольку store.query решает с RecordArray, которая простирается ArrayProxy:

return this.store.query('review', { expert_id: expertId}).then((data) => { 
    let model = self.modelFor('e'); 
    data.forEach((item) => { 
     item.set('currentUser', model); 
    }); 
    return data; 
});