Emberjs(链接到HasMany)加载路径时出错:TypeError:无法调用undefined方法'resolve'

时间:2013-12-26 10:24:09

标签: ember.js

我正在尝试设置路由的模型(不是嵌套的)但是属于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
}];

1 个答案:

答案 0 :(得分:1)

Updated Fiddle

我为你更新了小提琴并改变了一些东西。对我而言,将contacts添加为资源company的路径而不是单独的资源似乎更合乎逻辑。

我还制作了公司模型async,因此在实际渲染所有内容之前等待所有模型加载

如果您不完全理解解决方案,请查看并随意提问。