2

AngularJS をセットアップしましたresource:

app.factory('gridData', function($resource) {
        var csrf = 'asdf';
        return $resource('/my/url/:expID', {expID:'@id'},{
                get: {method:'GET'},
                query: {method:'GET', isArray:true},
                save:{method:'POST', headers: {'X-CSRFToken' : csrf }}
          });
});

リソースをコントローラーに注入し、gridDataそれを使用してサーバーからデータを取得しています。

       gridData.query(function(result) {
            console.log("result is");
            console.log(result);
            $scope.data = result;
        });

このアプローチは、AngularJS 1.3 を使用するとうまく機能します。console.log(result)ステートメントは、受信した実際のデータを出力します。

今、AngularJS 1.2.11 にダウングレードしようとしましたが、このconsole.log(result)に示すように、promise が出力されてから問題が発生しています。結果は約束に設定されていますが、実際のデータが利用可能な場合にのみ $scope.data を設定する必要があります。$scope.data

これは、1.3 から 1.2 の間の一部のバージョンで、Promise が Angular に導入されたためです。この状況を処理する方法/約束を正しく処理する方法はありますか?

4

1 に答える 1

0

$q サービスのドキュメントで「The Promise API」というタイトルのセクションを確認してください。Angular の約束に関するこのビデオもチェックアウトできます。

知っておく必要がある主な方法は.then. この方法でコードをリファクタリングする方法は次のとおりです。

gridData.query(function(promise) {
            promise.then(function (result) {
              console.log("result is");
              console.log(result);
              $scope.data = result;
            });
        });

この例はより簡潔になる可能性がありますが、説明目的で機能します。それが役立つことを願っています。

于 2014-03-13T23:23:53.907 に答える