У меня есть служба, которую я использую, чтобы проверить, разрешено ли моим пользователям видеть содержимое в моем приложении.Угловая услуга, доступная из любой точки мира
я использовать его как это:
<tab ng-controller="LibraryRTLController" ng-if="authFactory.hasFeature('ReadyToLearn')">
Однако он не кажется, чтобы работать должным образом, потому что я должен был бы инициализировать его в каждом контроллере, который кажется излишним.
Так что мой вопрос: есть ли что-то, что я могу использовать глобальную службу?
Обратите внимание, что по причинам, которые я не могу объяснить здесь, я должен использовать ng-if
, поэтому директива атрибута не поможет мне!
Update
Так ив добавил его к моей функции запуска:
angular.module('app')
.run(function ($rootScope, AuthService, authFactory, $state) {
$rootScope.authFactory = authFactory;
$rootScope.$on('$stateChangeStart', function (event, next, toParams) {
$state.newState = next;
var authorizedRoles = next.data.authorizedRoles;
if (!AuthService.isAuthorized(authorizedRoles)) {
event.preventDefault();
if (AuthService.isAuthenticated()) {
// user is not allowed
} else {
// user is not logged in
window.location.href = "http://" + window.location.hostname
}
}
});
})
При отладке я могу видеть, что это на самом деле установка переменной правильно.
в моей Айв службы создал функцию, которая просто просто предупреждает:
function doesWork()
{
alert('true!');
}
Теперь назад в моем HTML я есть:
<tab ng-controller="LibraryRTLController" ng-init="authFactory.doesWork()">
Однако без каких-либо результатов?
Вы можете крит пользовательские директивы, которые привнесли свой сервис аутентификации и просто удалить элемент, если пользователь не имеет права видеть текущий элемент –
@ ArturGórski Да, однако, мне нужно использовать ng-if –