【问题标题】:Accessing Ember-CLI Nested Controllers访问 Ember-CLI 嵌套控制器
【发布时间】:2015-01-05 04:18:16
【问题描述】:

这是我的目录结构:

controllers/
---- restaurant/
    ----items.js
---- index.js
---- restaurant.js

还有我的路由器声明:

this.route("restaurants",{
path: "/restaurants"
});

this.resource("restaurant", {
path: "/restaurants/:restaurant_id"
}, function() {
    this.resource("items", {
    path: "/items"
    });
});

我的项目控制器(位于restaurants/items.js)以以下内容开头:

export default Ember.ObjectController.extend({
    needs: ["restaurant"],
    restaurant: Ember.computed.alias('controllers.restaurant.model')

然后是在 hte restaurant 下添加项目的操作。

但是,我不断收到错误消息,提示需要将“餐厅”添加到“需求”中:

ReferenceError:(生成的项目控制器)#needs 不包括restaurant。要从(生成的项目控制器)访问餐厅控制器,(生成的项目控制器)应该有一个 needs 属性,它是它可以访问的控制器数组

这是我的设置(Ember-CLI 0.1.2 和 Ember 1.7) - 由于我使用壁炉适配器与 firebase 一起工作,我认为它不支持升级 Ember(根据我的尝试)。

DEBUG: -------------------------------
DEBUG: Ember      : 1.7.0"
DEBUG: Ember Data : 1.0.0-beta.10"
DEBUG: Handlebars : 1.3.0"
DEBUG: jQuery     : 1.11.2"
DEBUG: Fireplace  : 0.2.9"
DEBUG: -------------------------------

我已经尝试过 Stackoverflow 的其他答案(例如 How to communicate between controllers in Ember.js),但它们似乎没有帮助。

有人知道这里发生了什么吗?

【问题讨论】:

  • 奇怪,一切看起来都不错。 ember-cli 是否正确监视更改(崇高文本有时会将其锁定)。也许尝试重新启动 ember-cli。你有余烬检查员吗?确保当前路由使用正确的控制器?
  • 嗨亚伦,感谢您的回复。我使用 Atom 而不是 Sublime,并且我重新安装了 ember-cli 并多次重新启动服务器,但问题仍然存在。这很奇怪——根据 Ember Inspector 也正在加载正确的模型。另外,我已经在具有相同存储库的不同计算机上的两个不同操作系统(Windows + Mac)上进行了尝试,问题仍然存在。一个使用 0.1.5 版本的 ember,另一个使用 0.1.2。

标签: javascript ember.js nested ember-cli controllers


【解决方案1】:

从 Ember-CLI v0.2.1 + Ember v1.10.0 开始(可能适用于早期版本;但我没有尝试过),您可以这样做:

export default Ember.ObjectController.extend({
    needs: ["restaurant/items"],
    ...

要访问操作,您可以这样做:

actions: {
    myAction: function(arg1, arg2) {
      this.get('controllers.restaurant/item').send('someItemActionYouDefine', arg1, arg2);
    }
}

【讨论】:

    【解决方案2】:

    我认为您的 Items 控制器不需要位于子文件夹 restaurant 中。将其上移一层,看看是否能解决问题。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多