gpt4 book ai didi

javascript - Angular 让服务可以随处访问

转载 作者:行者123 更新时间:2023-11-29 14:42:07 25 4
gpt4 key购买 nike

我有一项服务可以用来检查我的用户是否可以查看我的应用程序中的内容。

我是这样使用的:

<tab ng-controller="LibraryRTLController" ng-if="authFactory.hasFeature('ReadyToLearn')">

但是它似乎不能正常工作,因为我必须在每个看起来多余的 Controller 中初始化它。

所以我的问题是:是否可以通过某种方式在全局范围内使用服务?

请注意,由于我无法在这里开始解释的原因,我必须使用 ng-if,所以属性指令对我没有帮助!

更新

所以我将它添加到我的运行函数中:

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()">

然而没有任何结果?

最佳答案

is there someway that i can use a service globally?

您可以简单地将服务公开为 $rootScope 属性,这样它就可以在每个模板中使用:

appModule.run(['$rootScope', 'authFactory', function($rootScope, authFactory) {
$rootScope.authFactory = authFactory;
}]);

关于javascript - Angular 让服务可以随处访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37225502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com