AngularJS :Http http成功コールバックでのスコープの問題
質問
私はphpを使用して私の工場にデータを取得していますが、これはコントローラ内のsuccessコールバック関数に正しく表示されます。ただし、返されたデータを$scopeに割り当てた後でも。お客様、私はコンソールを行う場合、それはありません。ログ($scope.コールバックの後、私のビューの[ng-repeat]もそれを拾っていません。
返されたデータを$scopeオブジェクトに割り当てている場合、データのスコープがsuccessコールバック内だけに制限される理由はありますか?
var customersController = function($scope, customersFactory) {
$scope.customers = [];
customersFactory.getAllData()
.success(function(customers) {
$scope.customers = customers;
console.log($scope.customers); // Object with correct data
}); // No errors so only showing happy path
console.log($scope.customers); // empty []
};
customersModule.controller('customersController', ['$scope', 'customersFactory', customersController]);
解決
$http関数は非同期的に発生します。したがって、コンソールを呼び出します。の後にログを記録します。 customersFactory.getAllData
常に空になります。
console.log($scope.customers); // Object with correct data
実際に起こっているのは
console.log($scope.customers); // empty []
成功コールバックを信頼して設定することができます $scope.customers
正しく、あなたはそれが後で起こることを理解するためにあなたのサイトを必要とするだけです。範囲が必要な場合。ビューがロードされる前に設定される顧客は、コントローラで解決を使用することを検討してください。
他のヒント
は
ではありませんconsole.log($scope.customers); // empty []
.
の前に実行します
console.log($scope.customers); // Object with correct data
.
?
2番目のものは成功()コールバックで、最初のものよりもるかに遅く実行することができます。
所属していません StackOverflow