EmberJS路线事件转换

时间:2013-08-06 13:25:37

标签: ember.js

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

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

喜欢:

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

1 个答案:

答案 0 :(得分:3)

  

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

你可以挂钩路由的activatedeactivate钩子并从那里调用控制器方法,如下所示:

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

希望它有所帮助。