我正在尝试设置路由的模型(不是嵌套的)但是属于setupController的关系
这是我的JSBIN 即公司有很多联系方式 从公司列表页面我直接链接到联系人页面(想要流程)
我想使用公司模型获取其联系人列表但我收到错误
Error while loading route: TypeError: Cannot call method 'resolve' of undefined
继承我的路由器
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
}];
答案 0 :(得分:1)
我为你更新了小提琴并改变了一些东西。对我而言,将contacts
添加为资源company
的路径而不是单独的资源似乎更合乎逻辑。
我还制作了公司模型async
,因此在实际渲染所有内容之前等待所有模型加载
如果您不完全理解解决方案,请查看并随意提问。