访问路线时运行一次功能

时间:2014-08-12 06:46:18

标签: ember.js

当我导航到路线时,控制器上会调用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'),

1 个答案:

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

由于控制器是单体,我认为告诉控制器应该何时重置其状态是完全有效的设计。我个人喜欢控制器不是单身*的方法,但我现在就用它。

*我确信通过操纵它在容器中的显示方式有一种方法,但这种方式现在已经足够好了。