質問

私は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番目のものは成功()コールバックで、最初のものよりもるかに遅く実行することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top