Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AngularJS访问另一个函数的变量_Javascript_Html_Angularjs - Fatal编程技术网

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
    }
})

有关如何使用作用域以及如何不使用作用域的详细文档,请显示该文件的更多信息。这两个函数是在同一个范围内定义的吗?它的代码很大。我添加了唯一重要的东西来了解这个想法。我将更新代码请显示更多文件。这两个函数是在同一个范围内定义的吗?它的代码很大。我添加了唯一重要的东西来了解这个想法。我会准确地更新代码。只要他以正确的顺序调用函数,它就会正常工作。我明白了。也许我的代码有问题。我认为安格拉斯的方式是不同的。谢谢你。只要他以正确的顺序调用函数,它就会正常工作。我明白了。也许我的代码有问题。我认为安格拉斯的方式是不同的。谢谢