2016-09-09 2 views
0

内に設定された変数を理解する:

var vm = $scope; 

/* get all teachers from database */ 
$http.get('app/php/db.php?action=get&table=data') 
    .then(function successCallback(response){ 
     vm.data  = response.data; 
     vm.totalItems = response.data.length; 
    }, function errorCallback(response){ 

    }); 

console.log(vm.data); 

コンソールは、データが未定義であると言います。 successCallback内で設定された変数を読み取ることができるように管理するにはどうすればよいですか?

答えて

0

あなたのログイン方法は、常にundefinedになります。あなたの電話はasynchronousです。 2ms、200msかかることがあります。サーバーからの応答をいつ受け取るかはわかりません。

あなたは、あなたのコントローラ内$watchを行うことができますsuccessCallback

$http.get('app/php/db.php?action=get&table=data') 
.then(function successCallback(response){ 
    vm.data  = response.data; 
    vm.totalItems = response.data.length; 
    console.log(vm.data); //here 
}, function errorCallback(response){ 

}); 

ORでそれをログに記録することができます。

$scope.$watch('vm.data', function(newData){ 
    console.log(newData.length); 
}); 
+0

私はsuccessCallback内で変数セットを使用できませんか?たとえば、私がvm.data.lengthを使用している場合、後でコントローラで動作しません。 私はちょうど "エラー:未定義はオブジェクトではありません(newData.length 'を評価しています)" ただし、vm.dataが確実に設定されています。それ以外の場合は、ng-repeatはhtmlファイルにデータを出力しません。 –

関連する問題