2017-01-06 4 views
0

Der folgende Code in meinem Controller ist - wenn ich die console.log() Linie zu erreichen, nichts wird ausgedruckt. Der AJAX-Aufruf gibt ein gültiges Array zurück. Ich habe versucht, $ scope mit anwenden $, aber ich habe bereits ein Prozess im Gange Fehler, ich gehe davon aus, weil $ http automatisch mit startet der Digest-Zyklus.

var mmyApp = angular.module('myApp',['ui.bootstrap']).controller('TasksController', TasksController); 
function TasksController($scope, $http) { 
$scope.transactions = []; 
$http.get('transactions').then(function (response) { 
      $scope.transactions = response.data;  
    }, function (error) { 
     throw error; 
    }); 
console.log($scope.transactions); 
} 

Antwort

2

$http.get ist asynchron. Wenn Sie Ihre console.log aufrufen, wurde Ihre GET-Anfrage noch nicht zurückgegeben. Sie können es im Inneren des Griffkörper bewegen, um zu sehen, dass es funktioniert:

$http.get('transactions').then(function (response) { 
      $scope.transactions = response.data;  
      console.log($scope.transactions); 
    }, function (error) { 
     throw error; 
    }); 
1

Sie sollten wissen, dass AJAX Anrufe mit $http in AngularJS asynchron gemacht werden, das heißt, sie laufen nicht mit dem Rest des Codes in Folge , es sei denn, du hast es so festgelegt.

Deshalb, wenn die console.log ausgeführt wird, hat die Anforderung noch nicht Verarbeitung beendet. Die korrekte Sache ist, dass Sie console.log ausführen, nachdem Sie die Zuweisung der Variablen im AJAX-Aufruf auf diese Weise ausgeführt haben:

var mmyApp = angular.module('myApp',['ui.bootstrap']).controller('TasksController', TasksController); 
function TasksController($scope, $http) { 

    $scope.transactions = []; 

    $http.get('transactions').then(function (response) { 
     $scope.transactions = response.data; 
     console.log($scope.transactions);  
    }, function (error) { 
     throw error; 
}); 
} 
Verwandte Themen