15

UI でバインドしている約束があります。promise が解決され、UI 要素がレンダリングされると、その UI 要素をクリックできます。クリックを処理するコントローラー コードでは、promise の値に基づいて行動したいと考えています。私のAngularコードのこの時点で、私は約束が解決されたことをすでに知っています..しかし、値を取得したいときはまだ約束です。

約束の価値を得る最良の方法は何ですか...それが解決されたに違いないことがわかっているとしたら?

4

2 に答える 2

21

約束は常に約束です - そしてそれはそうあるべきです。promise をビューに直接バインドすることは可能ですが、透明性に欠け、ビューのちらつきにつながる可能性があるため、私は通常、この方法をお勧めしません。thenより良い解決策は、呼び出しでスコープ値を割り当てることです。

myService.then(function( val ) {
  $scope.val = val;
});

の準備ができたら$scope.val、いつでも直接値として扱うことができます。

そうは言っても、promise の代入を直接行いたい場合は、それを promise のように扱う必要があります。つまり、 を呼び出す必要がありますpromise.then(function () { ... });。これは不便に思えますが、Promise がいかに強力であるかの証です。

Promise についてさらに詳しい情報が必要な場合は、最近の Google+ ハングアウトでそれらについて詳しく説明 (およびコード例を提供) し、AngularJS での Promise の利点、一般的な使用方法、およびベスト プラクティスについて説明しました: AngularJS Hangout -- Promises, Promises Promises 、約束します。終わりのないプロミス チェーンのアイデアは具体的に取り上げられましたが、頭のてっぺんにタイムコードはありません。

お役に立てれば!

于 2013-05-01T04:31:03.180 に答える