我是AngularJS的新手,也是JavaScript的承诺。 我有一个.config,它使用提供程序在我正在处理的应用程序中创建菜单。
此提供程序具有已启用的属性,在此已启用的属性中,我想检查用户是否为组织的管理员。仅当用户是管理员时才应显示此菜单项。
一些代码:
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
})
}]
})
问题是我得到一个$ promise作为返回值,而不是所需的布尔值。
答案 0 :(得分:0)
欢迎来到承诺和异步编程的世界!
是的 - 由于您的第一个退货声明在Organization.get
但是,当这个承诺结算时,你将获得你期望的布尔值。
我是第二次猜你 - 但如果你试图阻止一个页面加载,直到一个promise完成,你应该看看控制器中的解析功能。
http://odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx