$ resourceで$ promiseを使用する必要があるのはなぜですか?

マークチドロー

確かに、私はAngularに比較的慣れていませんが、REST呼び出しにngResourceを使用することで行き詰まりました。

比較的一般的と思われるファクトリパターンに従いました。

ただし、$ promise.thenを使用することによってのみREST応答にアクセスできます。$ resourceでは必要ないことを私は理解しています。

だから私はこの工場を持っています...

var LookupsService = angular.module('LookupsService', ['ngResource']);

LookupsService.factory('Lookups', ['$resource',
  function ($resource) {
      return $resource('http://localhost:5001/api/lookups', {});
  }]);

そしてこれは失敗します(未定義として)

alert(Lookups.get().foo);

しかし、これは問題ありません

    Lookups.get()
        .$promise
        .then(function (lookups) {
            alert(lookups.foo);
        });

私は明らかにここで何かが欠けています。ある種の男子生徒のエラー;-)

更新

すべてのあなたの助けに感謝します-それは今非常に明確です。彼女の答えとスニペットを明確にするために、@ fikkatraにチェックマークを付けました。しかし、ほとんどすべての答えが役に立ちました。デバッグにAlertを使用する場合は注意が必要です。

くそ

alertpromiseでの使用は機能しません。つまり、promise内の結果は表示されません。ただし、angularは、$resourceサービスを直接使用してスコープにバインドするように設計されています。これは、$resource結果をスコープオブジェクトにバインドできることを意味し、angularは、バインドを適用するときにスコープオブジェクトがpromiseであることを考慮します。そのためalert(resourceResult)、機能しませんが、$scope.myObj = resourceResult;(ビューにバインドして)機能します。

物事をより明確に説明するために挿入されたコードスニペット:

var app = angular.module('myapp', ['ngResource']);

app.controller('myctrl', function($scope, $resource) {
  //this won't work:
  //alert("won't work: " + $resource('https://api.github.com/users/fikkatra').get());
  //but this will work
  $resource('https://api.github.com/users/fikkatra').get().$promise.then(function(user) {
    alert("will work: " + user.login);
  });
  //directly assigning $resource result to scope will work:
  $scope.user = $resource('https://api.github.com/users/fikkatra').get();
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-resource.js"></script>
<div ng-app="myapp" ng-controller="myctrl">
  {{user.login}}
</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SerializeFieldを使用する必要があるのはなぜですか?

分類Dev

SerializeFieldを使用する必要があるのはなぜですか?

分類Dev

chrootを使用する必要があるのはなぜですか

分類Dev

Promise.allの代わりにbatch()を使用する必要があるのはなぜですか?

分類Dev

Fortranで「使用のみ」を使用する必要があるのはなぜですか

分類Dev

なぜshutdownNow()ではなくawaitTerminationを使用する必要があるのですか?

分類Dev

AndroidでRequestQueueを使用する必要があるのはなぜですか?

分類Dev

StackでDequeを使用する必要があるのはなぜですか?

分類Dev

Flutterでカードを使用する必要があるのはなぜですか?

分類Dev

Angular UnitTestingでJasmineSpy Objectを使用する必要があるのはなぜですか?

分類Dev

mongoDBクエリで+を使用する必要があるのはなぜですか

分類Dev

ReactJsでweb-packを使用する必要があるのはなぜですか?

分類Dev

'react'からimportReactを使用する必要があるのはなぜですか

分類Dev

なぜflatMapを使用する必要があるのですか?

分類Dev

なぜ基数を使用する必要があるのですか?

分類Dev

なぜEMFを使用する必要があるのですか?

分類Dev

なぜIDEを使用する必要があるのですか?

分類Dev

なぜJPanelを使用する必要があるのですか?

分類Dev

なぜstd :: forwardを使用する必要があるのですか?

分類Dev

Rails。なぜActiveRecordを使用する必要があるのですか?

分類Dev

なぜDjangoREST APIを使用する必要があるのですか?

分類Dev

なぜstrdup()を使用する必要があるのですか?

分類Dev

なぜgruntを使用する必要があるのですか-useminPrepare

分類Dev

なぜ@ngrx / storeを使用する必要があるのですか?

分類Dev

なぜreduxreact Nativeを使用する必要があるのですか?

分類Dev

jQueryにGoogleのCDNを使用する必要があるのはなぜですか?

分類Dev

Validators.compose()を使用する必要があるのはなぜですか?

分類Dev

<label>タグと 'for'属性を使用する必要があるのはなぜですか?

分類Dev

React with Meteorを使用する必要があるのはなぜですか?

Related 関連記事

  1. 1

    SerializeFieldを使用する必要があるのはなぜですか?

  2. 2

    SerializeFieldを使用する必要があるのはなぜですか?

  3. 3

    chrootを使用する必要があるのはなぜですか

  4. 4

    Promise.allの代わりにbatch()を使用する必要があるのはなぜですか?

  5. 5

    Fortranで「使用のみ」を使用する必要があるのはなぜですか

  6. 6

    なぜshutdownNow()ではなくawaitTerminationを使用する必要があるのですか?

  7. 7

    AndroidでRequestQueueを使用する必要があるのはなぜですか?

  8. 8

    StackでDequeを使用する必要があるのはなぜですか?

  9. 9

    Flutterでカードを使用する必要があるのはなぜですか?

  10. 10

    Angular UnitTestingでJasmineSpy Objectを使用する必要があるのはなぜですか?

  11. 11

    mongoDBクエリで+を使用する必要があるのはなぜですか

  12. 12

    ReactJsでweb-packを使用する必要があるのはなぜですか?

  13. 13

    'react'からimportReactを使用する必要があるのはなぜですか

  14. 14

    なぜflatMapを使用する必要があるのですか?

  15. 15

    なぜ基数を使用する必要があるのですか?

  16. 16

    なぜEMFを使用する必要があるのですか?

  17. 17

    なぜIDEを使用する必要があるのですか?

  18. 18

    なぜJPanelを使用する必要があるのですか?

  19. 19

    なぜstd :: forwardを使用する必要があるのですか?

  20. 20

    Rails。なぜActiveRecordを使用する必要があるのですか?

  21. 21

    なぜDjangoREST APIを使用する必要があるのですか?

  22. 22

    なぜstrdup()を使用する必要があるのですか?

  23. 23

    なぜgruntを使用する必要があるのですか-useminPrepare

  24. 24

    なぜ@ngrx / storeを使用する必要があるのですか?

  25. 25

    なぜreduxreact Nativeを使用する必要があるのですか?

  26. 26

    jQueryにGoogleのCDNを使用する必要があるのはなぜですか?

  27. 27

    Validators.compose()を使用する必要があるのはなぜですか?

  28. 28

    <label>タグと 'for'属性を使用する必要があるのはなぜですか?

  29. 29

    React with Meteorを使用する必要があるのはなぜですか?

ホットタグ

アーカイブ