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