相同的$ http.get请求在第二次调用中处理之前自动触发成功回调

时间:2016-01-21 10:10:37

标签: angularjs ionic-framework

我正在尝试使用Ionic Framework构建一个简单的混合应用程序。

我想创建一个inifite滚动系统,所以我有:

.controller('DiscoverCtrl', function (uris, $scope, $cordovaToast, $http, $ionicLoading, $ionicSideMenuDelegate, $ionicScrollDelegate, $ionicPopover, localStorage, $ionicPlatform, helpers) {
   var loadCircuits = function(page_to_load) {
        var page_to_load = page_to_load || 1
        $http.get(uris({pagination: true, per_page: 10, page: page_to_load}).circuits.discover, {timeout: 20000})
        .success(function(response, status, headers, config) {
            alert("success")
             angular.forEach(response.circuits, function (circuit) {
                $scope.cards.push(circuit);
                // console.log(circuit.description)
              });
             $scope.next_page = response.pagination.next_page;
        })
        .error(function(data, status, headers, config) {

            $ionicLoading.hide();
            // called asynchronously if an error occurs
            // or server returns response with an error status.
             $cordovaToast.showLongBottom('Sory, request failed:' + status).then(function(success) {
                // success
              }, function (error) {
                // error
              });
        });
    }

    loadCircuits();

    // Load more data
    $scope.loadMoreData = function() {
        alert("loadMore")
        loadCircuits($scope.next_page);
    }
});

<ion-infinite-scroll
  immediate-check="false"
  on-infinite="loadMoreData()"
  distance="1%">
 </ion-infinite-scroll>

但我面临以下问题:

我第一次拨打loadCircuits()时,success回调会正常触发。第二次(意思是当我们调用$scope.loadMoreData()时,在实际执行$ http.get请求之前触发成功回调...而且我不明白为什么。

Angular Version:1.4.3。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

$ http调用是针对具有相同参数的相同网址进行缓存的,因此在您的情况下,参数可能无法更改,我会考虑记录下一页。

您还可以强制不使用

进行缓存
cache: false

在$ http request config