【问题标题】:Nesting resources error嵌套资源错误
【发布时间】:2013-10-18 01:10:53
【问题描述】:

我已按照此示例 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);
  }
});

如果我删除那段代码,我将不再收到我的错误。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您需要告诉商店您要查找哪种对象。现在你只是给它一个ID。这可能是您正在寻找的:

    App.LogIndexRoute = Ember.Route.extend({
      model: function (params) {
        return this.store.find('log', params.log_id);
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多