我想知道是否有办法使用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
。我认为这可能是一个错误。
请帮我摆脱重新初始化。
答案 0 :(得分:2)
这不是错误。控制器的名称为App.TasksCreateTaskController
,这意味着您需要在{{render}}
中使用它:
{{render "tasks.create_task"}}
您正在使用的格式:
{{render "tasks/create_task"}}
表示您希望Ember.js呈现控制器Tasks.CreateTaskController
(注意名称空间Tasks
而不是App
)。 /
用于告诉Ember.js使用不同的命名空间(我认为这不是你想要的)。