2015-02-21 2 views
0

im new для AngularJS. У меня такая программа в файле Controller.Доступ к переменным другой функции с помощью 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); 
    } 

}) 

, но каждый раз, когда я называю myInfo() функция оповещения дает мне: undefined

в моей программе ajaxLogin() будет звонить первым. то, если будет нажата только кнопка, нажатая myInfo(), будет выведено предупреждение и будет отображаться предупреждение. в Normal Javascript он работает нормально. но не уверен, как работать с угловыми.

например:

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

} 

function function2() 
{ 
    var local = globalvarialbe; 
} 
+0

Пожалуйста, покажите больше файла. обе функции определены в одной области? –

+0

его большой код. Я добавил только важную вещь, чтобы получить представление. плохой код обновления –

ответ

0

Я нашел ответ в другой Forum.

просто нужно использовать $rootScope

$rootScope.loginid=1; 
+0

Не работает чувак! – Kirti

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

Однако вы не молясь всю картину так что его вид трудно отладки вы выдаете

+0

Точно. Пока он вызывает функции в правильном порядке, он должен работать нормально. –

+0

Я понял. может быть, что-то не так с моим кодом. Я думал, что угловой способ отличается. Спасибо –

+0

это не работает !! @Neta – Kirti

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> 
0

Yo нужно прикрепить переменную $ 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 для более подробной документации по КАК использовать оптические прицелы и как НЕ к.

Смежные вопросы