4

emberjs-1.0.0-rc-6.1

我的控制器:

Application.LoginController = Ember.Controller.extend({
        loginFailed: false,
        isProcessing: false,
        isSlowConnection: false,
        timeout: null,
        login: function() {
            /* some code */
        },
        success: function() {
            this.reset();
        },
        failure: function() {
            this.reset();
        },
        reset: function() {
            clearTimeout(this.get("timeout"));
            this.setProperties({
                isProcessing: false,
                isSlowConnection: false
            });
        }
    });

我的路由:

Application.LoginRoute = Ember.Route.extend({
        setupController: function(controller, model) {
            controller.reset();
        },
        events: {
        }
    });

当我第一次进入“/login”时,会调用 setupController。但是,我想使用一个事件(如转换)来调用 controller.reset() 每次应用程序转换到登录。

使用 LOG_TRANSITIONS: true

我可以在控制台中看到“Transitionned into 'login'”、“Transitionned into 'anotherPage'”,所以我想知道是否有可能在我的路由器中获取触发这些日志的事件。

像 :

Application.LoginRoute = Ember.Route.extend({
        setupController: function(controller, model) {
            controller.reset();
        },
        events: {
            didTransition: function(reason) {
                 controller.reset();
            }
        }
    });
4

1 回答 1

3

我想知道是否有可能在我的路由器中获取触发这些日志的事件。

您可以连接到路由activatedeactivate挂钩并从那里调用控制器方法,如下所示:

Application.LoginRoute = Ember.Route.extend({
  activate: function() {
    this.controllerFor('login').send('reset');
  },
  deactivate: function() {
    this.controllerFor('login').send('reset');
  }
});

希望能帮助到你。

于 2013-08-06T14:05:25.867 回答