使用AngularJS访问另一个函数的变量

时间:2015-02-21 15:57:02

标签: javascript html angularjs

我是AngularJS的新手。我在Controller File中有这种程序。

.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。

前:

var globalvarialbe;
function function1()
{
  globalvarialbe=12;

}

function function2()
{
  var local = globalvarialbe;
}

4 个答案:

答案 0 :(得分:2)

我要求提供更多信息的原因是凯德·刘易斯是因为你拥有它的方式应该非常好。

.controller('AppCtrl', function($scope, $ionicPopup, $timeout, $ionicModal, $state, $http, $ionicLoading) {
    var loginid;// globally Defined
    $scope.ajaxLogin = function(){
        loginid = 1;
    }

    $scope.myInfo = function(){
       alert(loginid);
    }

});

你可以看到它在这里工作: http://plnkr.co/edit/tkpmS1vqsOjhUp8rA99Y?p=preview

但是你并不是在恭维整个画面,所以你要发出好难的调试

答案 1 :(得分:2)

我已经测试了这段代码,它运行得很好:

控制器:

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>

答案 2 :(得分:0)

我在另一个Forum找到了答案。

只需要使用$rootScope

$rootScope.loginid=1;

答案 3 :(得分:0)

哟需要将变量附加到$ 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
    }
})

Click here有关如何使用范围的更详细文档以及 NOT 的方式。