0

我有一条有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')在我的应用程序路由中未定义。为什么?

以及如何更改它以使冒泡操作更新应用程序控制器属性?

4

1 回答 1

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);
  }

然后一切都应该工作。

于 2016-09-18T19:21:02.820 回答