在ember中我如何等待get的结果完成?

时间:2016-09-29 19:20:06

标签: ember.js

我有一个简单的管理页面,可以执行以下操作:

  beforeModel: function() {
    var permission = this.get('userService.currentUser.userPermission.isAdmin');
    if(!permission) {
      console.log("no permission");
      return this.transitionTo('index');
    }
  },

User和UserPermission是单独的模型。 UserPermission加载为异步。

如果我导航到/ admin(权限对象已经被缓存),这很有用,但是如果我直接进入/ admin,则可能是因为没有加载userPermission对象。

有没有办法说“获取userPermission然后评估”?

1 个答案:

答案 0 :(得分:1)

如果假设this.get('userService.currentUser')返回Promise,那么你可以这样做,因为beforeModel将在调用模型钩子之前解析异步操作。

beforeModel: function() {
    return this.get('userService.currentUser').then((userPermission) => {
        if (!userPermission.isAdmin) {
            this.transitionTo('index');
        }
    });
}