Emberjs (ссылка на HasMany) Ошибка при загрузке маршрута: TypeError: невозможно вызвать метод "разрешение" неопределенного

Я пытаюсь установить модель маршрута (не вложен), но с отношением относятся к setupController

Вот мой JSBIN, т. Е. Компания hasMany Contacts со страницы списка компаний. Я напрямую связался с страницей контактов (хочу, чтобы поток был таким образом)

Я хочу использовать модель компании, чтобы получить список своих контактов, но я получаю ошибку

Error while loading route: TypeError: Cannot call method 'resolve' of undefined

Heres my Router

App.Router.map(function() {
 this.resource('companies',{path:'/'});
 this.resource('company',{path:'/company/:company_id'});
 this.resource('contacts',{path:'/company/:id/contacts'}); 
});

Это то, что я делаю

App.ContactsRoute = Em.Route.extend({
 setupController: function(controller, model) {
 console.log(model.get('contacts')); //This line gives error
 //controller.set('model',model.get('contacts'));
 }
});

Модель

App.Company = DS.Model.extend({
 name: DS.attr('string'),
 contacts: DS.hasMany('Contact')
});

App.Company.FIXTURES = [{
 id: 1,
 name: 'company 1',
 contacts: ['1']
}, {
 id: 2,
 name: 'company 2',
 contacts: ['1', '2']

}];

App.Contact = DS.Model.extend({
 name: DS.attr('string'),
 company: DS.belongsTo('Company')

});
App.Contact.FIXTURES = [{
 id: 1,
 name: 'employee 1',
 company: 1 
}, {
 id: 2,
 name: 'employee 2',
 company: 2
}];
1 ответ

Обновленный скрипт

Я обновил скрипку для вас и изменил несколько вещей. Для меня было логичнее добавлять contacts в качестве маршрута ресурсной company вместо отдельного ресурса.

Я также сделал async модель компании, поэтому она ожидает, что все модели будут загружены до фактического отображения всего

Будьте внимательны и не стесняйтесь задавать вопросы, если вы не полностью понимаете решение.

licensed under cc by-sa 3.0 with attribution.