検索

ホームページ  >  に質問  >  本文

angular.js - サービス内の $http リクエストは正常ですが、コントローラーでデータを取得できません

カスタム サービスで $http を使用して、ローカルの json ファイルのデータを取得します。リクエストは成功する可能性がありますが、コントローラーでデータを取得できません。
ポイントをブレークすると、データが空であることがわかります。ページは更新されますが、データは存在します。理由は何ですか?

カスタマイズされたサービスコード:

リーリー

コントローラー内のコード:

リーリー

必要な Json データ:

リーリー

ブレークポイントは console.log です

ページが更新されると、

になります。

コントローラーからデータを取得できないのはなぜですか?非同期のせいでしょうか?

曾经蜡笔没有小新曾经蜡笔没有小新2872日前643

全員に返信(2)返信します

  • 给我你的怀抱

    给我你的怀抱2017-05-15 16:59:48

    非同期呼び出しの問題
    service.getData()を実行した後
    service.returnedDataの値がまだ空です~~~

    また、service.getData() がサービス内で呼び出されるのはなぜですか?
    他のモジュールがデータを必要としないときにデータをロードすることに何の意味があるのでしょうか?

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:59:48

    1. サービスコードに記述したサービス名は requestData ですが、コントローラーに記述した名前は blogData です。これが理由かどうかはわかりません。
    2. カスタム サービスで $http を使用する場合は、$http とその部分を分離し、コントローラー コード内で順番に呼び出す必要があります。

    つまり、コントローラーは少なくとも次のように記述する必要があります:
    requestData.getData().then(callback function)

    コールバック関数部分をカスタムサービスにカプセル化することをお勧めします

    返事
    0
  • キャンセル返事