簡體   English   中英

Angular JS $ http請求-緩存成功響應

[英]Angular JS $http request - caching success response

我有一個簡單的dataFactory可以檢索一些帖子:

dataFactory.getPosts = function () {
    if (this.httpPostsData == null) {
        this.httpPostsData = $http.get("http://localhost/matImms/wp-json/posts?type=journey&filter[posts_per_page]=-1&filter[order]=ASC&filer[orderby]=date")
            .success(function (posts) {

            })
            .error(function (posts) {
                console.log('Unable to load post data: ' + JSON.stringify(posts));
            });
    }

    return (this.httpPostsData);
}

控制器打電話給工廠,我知道這些職位都是承諾的-因此,成功有一些事情要做,反正有一些事情要做。 這很好。

.controller('CardsCtrl', function($scope, dataFactory,
        $ionicSlideBoxDelegate, $stateParams) {

    var parentID = $stateParams.parentID;
    var keyIDNumber = $stateParams.keyID;

    $scope.card = [];

    var httpcall = dataFactory.getPosts()
        .success(function (posts) {
            $scope.card = dataFactory.getChildPosts(parentID, posts, keyIDNumber);

            $ionicSlideBoxDelegate.update();
        });

    // do other stuff ......
});

但是,我現在正在嘗試緩存發布數據-但是,當第二次調用控制器時,它將返回錯誤。成功不是函數。 我認為是因為帖子已經被退回-但是我該如何處理呢?

那是因為您沒有返回$http.get ,而是在已經處理了.success.error之后返回了.success

您可以將控制器更改為在返回時調用.then ,也可以將服務更改為僅返回$http.get (刪除.success.error )並在控制器中進行處理。

如果更改控制器使用.then你還需要更新.success在服務功能return posts;

您是否嘗試過在$http調用中將cache選項設置為true? 像這里https://stackoverflow.com/a/14117744/1283740

也許是這樣的...

angular.module('foo', [])

.factory('dataFactory', ['$http', function($http){

  var dataFactory = {
          getPosts: getPosts
      };

  function getPosts(){

    var url = "http://localhost/matImms/wp-json/posts?type=journey&filter[posts_per_page]=-1&filter[order]=ASC&filer[orderby]=date"

    return $http({ cache: true, url: url, method: 'GET'})
      .error(function (posts) {
        console.log('Unable to load post data: ' + JSON.stringify(posts));
      });

  };

   return dataFactory;

}])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM