0

すでに良い情報があるという質問をするのは嫌いですが、実装が機能しない原因となるものが不足しています。

私のシナリオでは、サービスで再帰関数を使用して、反復チャンクでデータをロードしています。すべてのデータがスコープによってキャプチャされますが、別の場所に移動してから再度戻らない限り、最初のセットのみが表示されます。明らかに、スコープを $watch する必要があります。どうすればいいのかわかりません。

AccountService は、1 の引数が渡される getAccountsByPage というメソッドを実行します。その後、その関数は値 2 で自身を呼び出します。

$routeProvider.when('/accounts/', {
    ...
    controller: function ($scope, AccountService) {
        var accounts = $scope.accounts = AccountService.getAccountsByPage(1);
        $scope.$watch('accounts', function(newVal, oldVal) {
            console.log(newVal, oldVal);
        });
    }
});

console outputs: undefined, undefined
    [Object, Object, Object...] undefined

明確にするために、データを取得することは問題ではありません。ビューの更新です。Angular はコントローラーで $watch を使用しないように言っていますが、誰もがそうしているようです...

4

1 に答える 1

0

投稿したコードから、$scope.accountsコントローラーが最初にインスタンス化されたときに一度だけ設定されます。下で何をしているかは問題ではありませんAccountService.getAccountsByPage。返されるものは何でも に入れられ$scope.accounts$watchその 1 回トリガーされます。変更されるまで、再度トリガーされることはありませ$scope.accountsん。これは、投稿されたコードのどこにも発生していません。

于 2013-10-09T18:26:08.497 に答える