EmberJS:听取Ember物体的变化

时间:2014-05-27 07:16:41

标签: javascript events ember.js authorization

我有以下授权路线。从其继承的其他路由根据登录用户

的特定角色限制访问
App.AuthorizedRoute = Em.Route.extend({
  beforeModel: function(transition){
    var access = this.get('access');

    if (Em.isEmpty(access)) {
      return;
    }

    var deferred = Ember.Deferred.create();

    //----------------------------------------------------
    // trigger the following after the 'model' property in 
    // users controller is loaded

      deferred.resolve();
      return this.check(this.controllerFor('users').get('model.role'));
    //----------------------------------------------------

    return deferred;
  },

  check: function(role){
    if (this.get('access').contains(role)) {
      console.debug("[DEBUG] You are "+role+", go ahead");
      return true;
    }
    console.debug("[DEBUG] You are "+role+", you can not access to dashboard");
    this.transitionTo('users');
  }
});

我的问题是,我不知道Ember是否有一些事件监听器,如this.controllerFor('users').get('model').on('loaded', function(){...});来监听对象的更改。

我是Ember的新人。我应该把它放在上面代码的评论部分?请帮帮我。

**更新:

我有路由/ users / 1 / secret,以下是从授权路由继承的秘密路由:

App.UsersDashboardRoute = App.AuthorizedRoute.extend({
  access: ['admin'],
  model: function(){
    // fetch some data here
  }
});

因此,在获取秘密数据之前,必须通过beforeModel钩子检查user1的角色。那么如何知道用户控制器的模型已经加载,然后我可以调用this.check(this.controllerFor('users').get('model.role'))

0 个答案:

没有答案