0
我对AngularJS和JavaScript中的承诺都很陌生。 我有一个.config,它使用提供程序在我正在处理的应用程序中创建菜单。
该供应商拥有一个enabled属性,在这个enabled属性我要检查,如果用户是一个组织的管理员。只有当用户是管理员时才能显示此菜单项。
一些代码:
PageMenuProvider
.page('organization', 'dashboard', {
state: 'organization.dashboard',
label: 'SW.ORGANIZATION.DASHBOARD.LABEL',
weight: -60,
enabled: ['$stateParams', '$rootScope', 'Organization', function ($stateParams, $rootScope, Organization) {
return Organization.get({ slug: $stateParams.slug }).$promise
.then(function (organization) {
return organization.user_role === 'management' || $rootScope.isAdmin
})
}]
})
的问题是,我得到一个$承诺作为回报价值,而不是期望的布尔值。
问题是,您无法访问提供程序中的$ scope。我当然不希望在$ rootScope上执行此操作。 – Timon 2014-09-22 08:23:11
您可能希望将isAdmin存储在某个用户实体的某个概念上,而不是$ rootScope。让这个工作起作用的关键是'enabled'被处理。正如我所说的那样,方法会返回一个承诺 - 在他们的内部,您需要解决和处理响应。 – eddiec 2014-09-22 13:00:44