2

Angular がコントローラー内から Promise を処理できることは承知しています。例えば:

function MyCtrl($scope) {
  $scope.myvar = getDeferredPromise();
}

メインの angular ダイジェスト ループはこれを適切に処理し、遅延関数が後で最終的に返す値をmyvarに割り当てます。

ただし、$http.get()メソッドは promise を返しますが、この方法で動作させることはできません。例えば:

function MyCtrl($scope, $http) {
  $scope.myvar = $http.get('/url');
} 

get メソッドが返す「約束」には、myvarに割り当てたいデータが割り当てられた関数を受け取るsuccessメソッドがあります。

ただし、thenメソッドもありますが、データ部分だけでなく、応答オブジェクト全体が与えられます。これは、myvarに割り当てられるように見えるものです!

このフィドルが役立つかもしれません: http://jsfiddle.net/QKnNC/1/

ここで何か間違ったことをしていますか?それとも、これはどういうわけか「設計による」ものですか?

4

3 に答える 3

1

then成功とエラーのコールバックを受け取り、それが何であれ、解決された値を取得する一般的な promise 関数です。successerror$http具体的であり、1 つの例外を除いて のエイリアスですthen。データだけでなく、一連の有用な引数を設定します。ソースを参照してください。

于 2013-09-06T14:39:40.890 に答える