我已按照此示例http://emberjs.com/guides/controllers/dependencies-between-controllers/为我的应用实现嵌套资源,但继续接收路由和输入错误。
我创建了我的路线如下:
App.Router.map(function () {
this.resource('logs', {path: '/'}, function(){
this.resource('log', {path:'/logs/:log_id'}, function(){
this.resource('triggers');
});
});
});
我的控制器:
App.TriggersController = Ember.ArrayController.extend({
needs:"log"
});
型号:
App.Log = DS.Model.extend({
name: DS.attr('string'),
type: DS.attr('string'),
messages: DS.attr('string'),
triggers: DS.hasMany(App.Trigger, {async:true})
});
儿童模特:
App.Trigger = DS.Model.extend({
name: DS.attr('string'),
pattern: DS.attr('string'),
isEnabled: DS.attr('boolean'),
colour: DS.attr('string'),
highlightText: DS.attr('boolean'),
invertContrast: DS.attr('boolean')
});
JSFiddle链接:http://jsfiddle.net/WZp9T/11/
单击其中一个链接,您应该在控制台中看到错误。
(“加载路径时出错:TypeError {}”和“未捕获的TypeError:无法读取未定义的属性'typeKey'以及弃用警告”
基本上,我想要实现的目标是:
日志 - >记录 - >日志触发器 - >触发
每个上下文都应该保留在屏幕上,我到底哪里错了?
编辑:这似乎是一个问题:App.LogIndexRoute = Ember.Route.extend({
model: function (params) {
return this.store.find(params.log_id);
}
});
如果删除该段代码,我将不再收到错误。
答案 0 :(得分:0)
您需要告诉商店您要查找哪种对象。现在你只是传递一个ID。这可能就是你要找的东西:
App.LogIndexRoute = Ember.Route.extend({
model: function (params) {
return this.store.find('log', params.log_id);
}
});