【发布时间】:2014-04-08 08:22:24
【问题描述】:
我正在视图层使用 Angular js。我需要使用一些全局变量,这些变量将被我的应用程序中的所有控制器方法使用和修改:
var app = angular.module('myWebservice', ['ngCookies']).run(
function($rootScope) {
$rootScope.authToken = null; });
app.controller('UserController', function($cookieStore, $scope, $location,
$routeParams, $http, $timeout, $rootScope) {
$scope.login= function() {
$http.defaults.headers.post = {'Accept' : 'application/json',
'Content-Type' : 'application/json'};
$http.post('/myServise/api/user/login-user', {
emailId : $scope.username,
password : $scope.password
}).success(function(data, status) {
if (status == 200) {
$rootScope.authToken = data.object.authToken;
}).error(function(data, status) {
console.debug(data);});
}// Else end
};// End Login
app.controller('MerchantController', function($cookieStore, $scope, $location,
$routeParams, $http, $timeout, $rootScope) {
$scope.getRootScopeValues = function()
//$scope.getRootScopeValues = function($rootScope)
{
$scope.token = $rootScope.authToken;
console.log($scope.token);// Undefined
console.log($rootScope.authToken);// Undefined
}
});
我是 Angular JS 的新手,我也尝试过使用服务,但我不知道为什么我无法访问全局变量 (authToken)。请帮助我,我被困在这一点上....提前谢谢...
【问题讨论】:
-
这可能是因为您尝试在
$http帖子设置之前访问authToken。 -
首先我调用 login 并在登录方法中我得到 authToken 然后在设置为 rootScope 之后如果我登录我得到 authToken 的值。
-
我的意思是,在
UserController中的 HTTP 请求完成之前,您可能正在尝试 tpconsole.logMerchantController中的 authToken。 -
不不,实际上当我用登录完成执行时,只有我在调用 getRootScopeValues 函数。当用户登录时,他点击我写过 ng-click="getRootScopeValues()" 的链接。我也可以相应地查看服务器日志。
-
$http.post()返回一个承诺,这意味着如果 authToken 是异步设置的(即在对login()的调用完成之后。所以...
标签: javascript angularjs angularjs-directive angularjs-scope angular-ui-bootstrap