如果所需的控制器由{{render}} helper初始化,则指定控制器之间的依赖关系

时间:2013-04-04 13:03:58

标签: ember.js

我想知道是否有办法使用needs参数指定所需的控制器(没有重新初始化),如果控制器已由{{render "'.' or '/' containing path"}}帮助器初始化。

例如:

//tasks.hbs
{{render "tasks/create_task"}}

//tasks_controller.js
App.TasksController = Ember.Controller.extend({
  needs: 'tasksCreateTask',

  aMethod: function() {
    // The following code causes re-initialization of the 
    // App.TasksCreateTaskController, previously initialized by the render helper.
    this.get('controllers.tasksCreateTask');
  }
});

重新初始化的原因显然是ember控制器缓存中同一控制器的不同密钥:密钥controllers:tasks.create_tasks存在,但不存在controllers:tasksCreateTasks。我认为这可能是一个错误。

请帮我摆脱重新初始化。

1 个答案:

答案 0 :(得分:2)

这不是错误。控制器的名称为App.TasksCreateTaskController,这意味着您需要在{{render}}中使用它:

{{render "tasks.create_task"}}

您正在使用的格式:

{{render "tasks/create_task"}}

表示您希望Ember.js呈现控制器Tasks.CreateTaskController(注意名称空间Tasks而不是App)。 /用于告诉Ember.js使用不同的命名空间(我认为这不是你想要的)。