Maintenant, j'ai un contrôleur et définir certaines fonctions comme suit. Je veux obtenir la variable data2 dans la fonction de rappel. Mais maintenant c'est indéfini.ne peut pas obtenir la valeur variable externe dans la fonction de rappel
var searchApp = angular.module('reveal.searchUI');
searchApp.controller('SearchController', ['$rootScope','$scope','$q','$http','$timeout','$window',
'$i18next', '$filter','$sanitize', '$cookies',
'emcui.EventBus','RemoteUrl',"Reveal","Cache","AUTH_EVENTS",
function($rootScope, $scope, $q, $http, $timeout, $window, $i18next,
$filter, $sanitize,$cookies, eventBus,remoteUrlProvider, reveal,
cache, AUTH_EVENTS){
var self = this;
var data1 = "data1";
this.testing = function(){
var data2 = "data2";
setTimeout(function(){
//need to get the variable data2
},1000);
};
}]);
Il n'y a rien dans votre code à penser que vous ne seriez pas en mesure d'accéder à cette variable. Êtes-vous sûr que '' '.testing''' est en cours d'exécution? – jlogan
Avec le framework AngularJS, le code devrait utiliser le [$ timeout service] (https://docs.angularjs.org/api/ng/service/$timeout) au lieu du 'setTimeout' brut. Ce qui est curieux, c'est que le contrôleur injecte '$ timeout' mais ne l'utilise pas. Pouvez-vous expliquer cela? – georgeawg
J'essaie de l'exécuter par self.testing(). À partir du débogage, la variable n'est pas accessible. –