我对angularjs非常陌生,我有三个模块和一个工厂。我想在不同的模块之间共享工厂的值。我不知道自己在做什么错,因为在运行中,调用了登录名后userRole不会更新。
angular.module("main", ["app", "controller"])
angular.module("main", [])
.factory("authService", authService);
function authService(){
var userRole = "",
service = {
setRole : setRole,
getRole : getRole
};
return service
function setRole(role){
userRole = role;
}
function getRole(){
return userRole;
}
}
angular.module("controller", [])
.controller("Controller1", Controller)
Controller.$inject = ["authService"]
function Controller(authService){
afterCallLogin().then(data, function(){
authService.setRole(data.role);
console.log(authService.getRole()) // this print "user" **CORRECT**
});
}
angular.module('app', [])
.run('runApp', runApp);
runApp.$inject = ['$rootScope', '$state', '$stateParams', 'authService']
function runApp($rootScope, $state, $stateParams, authService){
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
console.log(authService.getRole()) // this print an empty value, **DOES NOT CHANGE**
});
}
您的问题在于以下几行:
angular.module("main", ["app", "controller"])
angular.module("main", [])
.factory("authService", authService);
消除angular.module("main", [])
或将其更改为angular.module("main")
。请注意,缺少第二个参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句