【发布时间】:2016-09-18 17:53:14
【问题描述】:
我有一条带有afterModel 钩子的路由。
afterModel: function(model, transition){
transition.send('doInAppRoute');
}
我的申请路线中有一个操作:
doInAppRoute: function(){
var controller = this.get('controller');
controller.set('someProp', true);
}
当我使用 afterModel 钩子允许动作从路由冒泡时,我收到以下错误。
Error while processing route: embed Cannot read property 'set' of undefined TypeError: Cannot read property 'set' of undefined
如果我在应用程序模板中对doInAppRoute 进行操作调用,一切都会按预期运行。
如果对doInAppRoute 的操作调用冒泡,则我的应用程序路由中的this.get('controller') 未定义。为什么?
如何更改此设置以使冒泡操作更新应用程序控制器属性?
【问题讨论】:
-
在所有模型钩子都解决之后,控制器才会被设置。
-
我会说将您的状态相关属性保留在控制器中。在您的情况下,如果您在路由中更改
someProp,那么除非它通过 setupController,否则它不会反映在模板中。
标签: ember.js event-bubbling ember-router ember-controllers