我正在使用AngularFire Seed项目。我想为管理员和普通注册用户显示不同的视图。 AngularFire Seed项目有内置指令,名为" ngShowAuth"你可以在这里找到:simpleLoginTools。该指令用于显示已注册和未注册用户的不同视图。同样,我想为管理员和用户显示不同的视图。
我绊倒了,发现了这个stackoverflow resource。我试图实现它并且它不起作用。我想在user.uid可用时立即启动此服务。
我最好只想执行服务,一旦isAdmin设置为true或false,我想过滤状态路由中的视图。
这是服务和指令:
'use strict';
angular.module('bpmWaitForAdmin', [])
.service('bpmWaitForAdmin', function ($rootScope, syncData, waitForAuth) {
return {
init: function (auth) {
$rootScope.$on('$firebaseSimpleLogin:login', function (e, user) {
var admins = syncData('admins');
admins.$on("loaded", function () {
if (user.uid in admins) {
$rootScope.$broadcast('bpmWaitForAdmin:true');
}
else {
$rootScope.$broadcast('bpmWaitForAdmin:false');
}
});
});
$rootScope.$on('$firebaseSimpleLogin:logout', function () {
$rootScope.$broadcast('bpmWaitForAdmin:false');
});
}
};
})
.directive('bpmShowAdmin', function ($rootScope, $timeout) {
return {
restrict: 'A',
compile: function (element, attributes) {
element.addClass('hide');
$rootScope.$on("bpmWaitForAdmin:true", function () {
$timeout(function () {
element.removeClass('hide');
});
});
$rootScope.$on("bpmWaitForAdmin:false", function () {
$timeout(function () {
element.addClass('hide');
});
});
}
}
});