1

私は調べましたが、これは単純だと思いますが、これに関する API ドキュメントを理解できませんでした。

最初に呼び出されたときにデータを取得するコントローラーがあるとします (もちろん、かなり省略しています)。

myCtrl = function ($scope, Data) {
  $scope.data = [];

  data_promise = Data.getData(); //a $http service
  data_promise.success(function (data) {
    $scope.data = data;
  });
}

これはうまく機能し、ページが読み込まれると、必要なとおりに $scope.data が入力されます。しかし、もちろん、ユーザーはデータを更新したいと思うかもしれません。サーバーがフォームの「保存」ボタンをクリックしたときに呼び出される単純なサービス「Data.save()」を想定します。

myApp.factory('Data', function ($http) {
  save: function (data) {
    $http({
      method: 'POST',
      url: 'someURL',
      data: data,
    }).success(function(){
      //something here that might trigger the controller to refresh
    });
  };
});

サーバーから最新のデータを取得するためにコントローラーを再インスタンス化する成功コールバックに何を入れますか? 現在、更新されたデータを取得するためにページを更新する必要があります。結果と変更をキャッシュすることでサーバー呼び出しを最小限に抑えることについて、今のところ心配していません。これを最初に機能させる必要があります。

ありがとう!

4

2 に答える 2

0

リフレッシュする必要はありません。ControllerScope で更新されたデータを変更するだけです。

これはうまくいくはずです。

myApp.factory('Data', function ($http) {
  save: function (data, $scope) {
    $http({
      method: 'POST',
      url: 'someURL',
      data: data,
    }).success(function(){
      $scope.data = newData;
      //something here that might trigger the controller to refresh
    });
  };
});

// in your controller
Data.save(data, $scope);

しかし:この方法を行うべきではありません。これは乱雑に見えます。監視するサービスまたはイベントを使用して、サービスから変更が返されるのを待ちます。

于 2013-04-27T19:54:42.437 に答える