javascript - 如何从 Controller 访问 currentUser?

标签 javascript ember.js ember-simple-auth

这是我的初始化程序:

...
Ember.SimpleAuth.Session.reopen({
    currentUser: function() {
        var userId = this.get('user_id');

        if (!Ember.isEmpty(userId)) {
            return container.lookup('store:main').find('user', userId);
        }
    }.property('user_id')
});
...

Controller :

isAdmin: function() {
    var session = this.get('session.currentUser'),
        role = session.get('role'); // 'role' is undefined

    return role.get('name') == "Administrator";
}.property()

但是当我尝试使用模板时:

{{session.currentUser.role.name}}

它工作得很好。

如何访问所有 Controller 甚至路由中的currentUser

最佳答案

我认为这是因为 session.currentUser 是一个 promise 。在您的 Controller 中尝试一下:

isAdmin: function() {
    return this.get('session.currentUser').then(function(r) {
      return r.get('role.name') == 'Administrator';
    });
}.property()

关于javascript - 如何从 Controller 访问 currentUser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24179730/

相关文章:

ember.js - 强制 ember data store.find 从服务器加载

javascript - 尝试让按钮在 Ember.js 中显示

javascript - 我如何确定到底是什么原因导致了 Ember 弃用?

javascript - 如果找不到替换信,请保留原信

javascript - 如果测试有错误,Karma 不会失败

html - 如何停止打印媒体的 Bootstrap 表背景颜色设置覆盖我的类(class)设置

javascript - 在 ember-simple-auth 中使浏览器关闭时的 session 无效?

javascript - ember.js - 使用简单的 auth/torii 获取访问 token

javascript - 我的 View 没有从我的 Controller 接收数据

javascript - 如何将不同数组中的多个值添加到下拉列表中?