Ember.js动作冒泡但操作中的控制器未定义

时间:2016-09-18 17:53:14

标签: ember.js event-bubbling ember-router ember-controllers

我的路线有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')未定义。为什么呢?

如何改变这一点,以便冒泡操作更新应用程序控制器属性?

1 个答案:

答案 0 :(得分:0)

感谢@torazaburo带领我朝着正确的方向前进。

这就是我所做的。

someProp设置为应用程序路径中的初始值。

someProp: false,

然后在应用程序路由操作中执行以下操作:

doInAppRoute: function(){
  this.set('someProp', true);
}

然后在应用程序路由setupController中执行:

  setupController: function(controller, model){
    controller.set('someProp', this.get('someProp'));
    controller.set('model', model);
  }

然后一切都应该有效。