Javascript 使用AngularJS访问另一个函数的变量
我是安格拉斯的新手。我在控制器文件中有这种程序Javascript 使用AngularJS访问另一个函数的变量,javascript,html,angularjs,Javascript,Html,Angularjs,我是安格拉斯的新手。我在控制器文件中有这种程序 .controller('AppCtrl', function($scope, $ionicPopup, $timeout, $ionicModal, $state, $http, $ionicLoading) { var loginid;// globally Defined $scope.ajaxLogin = function(){ loginid = 1; } $scope.myInfo = fun
.controller('AppCtrl', function($scope, $ionicPopup, $timeout, $ionicModal, $state, $http, $ionicLoading) {
var loginid;// globally Defined
$scope.ajaxLogin = function(){
loginid = 1;
}
$scope.myInfo = function(){
alert(loginid);
}
})
但是每次我调用myInfo()
函数时,警报都会提示我:undefined
在我的程序中,ajaxLogin()
将首先调用。然后,如果只单击按钮myInfo()
,将调用并显示警报。在普通Javascript中,它可以正常工作。但不知道如何使用angularjs
例:
我之所以要凯德·刘易斯提供更多的信息,是因为你的方式应该是完美的
.controller('AppCtrl', function($scope, $ionicPopup, $timeout, $ionicModal, $state, $http, $ionicLoading) {
var loginid;// globally Defined
$scope.ajaxLogin = function(){
loginid = 1;
}
$scope.myInfo = function(){
alert(loginid);
}
});
您可以在此处看到其工作原理:
然而,你并不是在恳求整个情况,因此你提出了一种困难的调试问题。我之所以要了解更多信息,是因为你的方式应该运作得非常好
.controller('AppCtrl', function($scope, $ionicPopup, $timeout, $ionicModal, $state, $http, $ionicLoading) {
var loginid;// globally Defined
$scope.ajaxLogin = function(){
loginid = 1;
}
$scope.myInfo = function(){
alert(loginid);
}
});
您可以在此处看到其工作原理:
但是,您并不是在恳求整个情况,因此您所发出的那种难以调试的问题我已经测试了这段代码,它工作得很好: 控制器:
angular.module('vars').controller('varsController', ['$scope', function($scope) {
var loginid;// globally Defined
$scope.ajaxLogin = function(){
loginid = 1;
};
$scope.myInfo = function(){
alert(loginid);
};
$scope.ajaxLogin();
}]);
HTML视图:
<div ui-view ng-controller="varsController">
<button ng-click="myInfo()">Click</button>
</div>
点击
我已经测试了这段代码,它运行得很好:
控制器:
angular.module('vars').controller('varsController', ['$scope', function($scope) {
var loginid;// globally Defined
$scope.ajaxLogin = function(){
loginid = 1;
};
$scope.myInfo = function(){
alert(loginid);
};
$scope.ajaxLogin();
}]);
HTML视图:
<div ui-view ng-controller="varsController">
<button ng-click="myInfo()">Click</button>
</div>
点击
我在另一本书中找到了答案
只需使用$rootScope
$rootScope.loginid=1;
我在另一本书中找到了答案 只需使用
$rootScope
$rootScope.loginid=1;
您需要将变量附加到$rootScope,以使其在AngularJS中全局可用。这就是为什么:
.controller('AppCtrl', function($scope, $rootScope, $ionicPopup, $timeout, $ionicModal, $state, $http, $ionicLoading) {
// Make sure you **inject $rootScope** first
$rootScope.loginid;
$scope.ajaxLogin = function(){
$rootScope.loginid = 1;
}
$scope.myInfo = function(){
console.log($rootScope.loginid); //Also, use console logs for better Dev Experience
}
})
有关如何使用作用域和如何不使用作用域的更详细文档,请将变量附加到$rootScope,以便在AngularJS中全局可用。这就是为什么:
.controller('AppCtrl', function($scope, $rootScope, $ionicPopup, $timeout, $ionicModal, $state, $http, $ionicLoading) {
// Make sure you **inject $rootScope** first
$rootScope.loginid;
$scope.ajaxLogin = function(){
$rootScope.loginid = 1;
}
$scope.myInfo = function(){
console.log($rootScope.loginid); //Also, use console logs for better Dev Experience
}
})
有关如何使用作用域以及如何不使用作用域的详细文档,请显示该文件的更多信息。这两个函数是在同一个范围内定义的吗?它的代码很大。我添加了唯一重要的东西来了解这个想法。我将更新代码请显示更多文件。这两个函数是在同一个范围内定义的吗?它的代码很大。我添加了唯一重要的东西来了解这个想法。我会准确地更新代码。只要他以正确的顺序调用函数,它就会正常工作。我明白了。也许我的代码有问题。我认为安格拉斯的方式是不同的。谢谢你。只要他以正确的顺序调用函数,它就会正常工作。我明白了。也许我的代码有问题。我认为安格拉斯的方式是不同的。谢谢