私はAngularJSを初めて使用するので、これは実際にはまだ完全には理解していないコアコンセプトを示している可能性があります。$q
&promise
オブジェクトを使用して、「リモートデータ」をローカルデータのように処理しようとしています。リモートデータがフェッチされないときまで、promise
オブジェクトは解決されませんが、解決されたらすぐに、ビュー内のすべての依存データバインディングを更新する必要があります。ただし、次のアプローチでは、前の呼び出しで解決されたpromiseオブジェクトが生成されたremote_total
場合でも、が繰り返し呼び出される無限ループが発生します。remote_total
これが私の見解です
<div ng-controller="MyController">
{{ remote_total() }}
</div>
コントローラからの関連スニペットは次のとおりです。
function MyController($scope, $q, $http) {
$scope.remote_total = function() {
var def = $q.defer();
$http.get('/my/remote/service.json').success(function(data) {
def.resolve(data);
});
return def.promise;
}
}
まず、なぜこれが無限ループに陥っているのかを誰かが私に説明できれば素晴らしいと思います。第二に、私がやろうとしていることを達成するための最良の方法は何ですか?