当我导航到路线时,控制器上会调用init
挂钩。
当我离开然后回到路线时,它不是。如何在每次访问时强制函数在控制器上运行?
因此,下面的功能在您第一次访问时起作用。但是,子请求调用不会转换为manage.site
。
siteChanged : function() {
var site = this.get('site');
if(site) {
this.transitionToRoute('manage.site', site);
} else {
this.transitionToRoute('manage');
}
}.observes('site').on('init'),
答案 0 :(得分:1)
我有一个类似的用例,所以这就是我做的:
App.FooRoute = Ember.Route.extend({
activate: function() {
Em.tryInvoke(this.get('controller'), 'activate');
}
});
App.FooController = Ember.Controller.extend({
activate: function() {
// This controller's route was just activated
// Perform any setup logic here
}
});
由于控制器是单体,我认为告诉控制器应该何时重置其状态是完全有效的设计。我个人喜欢控制器不是单身*的方法,但我现在就用它。
*我确信通过操纵它在容器中的显示方式有一种方法,但这种方式现在已经足够好了。