2015-12-02 51 views
0

我想將外部JSON內容加載到我的控制器範圍。開始我的前十個項目的範圍是沒有問題的。但我想要的是動態擴大新項目的範圍(滾動)服務動態加載角度數組中的新內容

由於某種原因,當我嘗試運行loadNews(counter)函數時,分頁在我的服務中不起作用。然而,當我在服務中記錄http獲取響應的結果時,顯示正確的數據。

當我擴大範圍newsitems時,它會擴大,但只有第一頁的項目。

這是我的一點點代碼。

app.service('newsService', function ($http, $q) { 
    var deferred = $q.defer(); 
    var deferred2 = $q.defer(); 
    this.loadNews = function (counter) { 
    if (counter == undefined) { 
     $http.get('http://domain.com/wp- json/wp/v2/posts').then(function (response) { 
     deferred.resolve(response); 
     }); 
     return deferred.promise; 
    } else { 
      console.log(counter); // This returns a correct counter 
      $http.get('http://domain.com/wp-json/wp/v2/posts?page=' + counter).then(function (response) { 
      deferred2.resolve(response); 
     }); 
     return deferred2.promise; 
    } 

    } 
}); 

app.controller('homeNewsCtrl', function ($scope, $http, $timeout, $cordovaSplashscreen, newsService) { 

    $scope.count = 1; 

    var promise = newsService.loadNews(); 
    promise.then(function (response) { 
    $scope.newsItems = response.data; 
    }); 

    $scope.loadMore = function (counter) { 
    $scope.count += counter; 
    var promise = newsService.loadNews($scope.count); 
    promise.then(function (response) { 
     $scope.newsItems.push.apply($scope.newsItems, response.data); 
    }); 
    }; 
}); 
+0

你可以發佈一個小提琴什麼的 – gaurav5430

+0

代碼看起來很直截了當,顯而易見的權利?爲什麼在$ scope.newsItems.push.apply($ scope.newsItems,response.data);而不是來自else語句中的響應? –

+0

是否檢查了數組值,它們是否被添加 – gaurav5430

回答

0

最終我想出了一個工廠解決方案。這對我有效。

app.factory('newsItems', function ($http) { 
    return { 
    getNews: function (counter) { 
     if (counter != undefined) { 
     return $http({ 
      url: 'http://www.domain.com/wp-json/wp/v2/posts?page=' + counter, 
      method: 'GET' 
     }) 
     } else { 
     return $http({ 
      url: 'http://www.domain.com/wp-json/wp/v2/posts', 
      method: 'GET' 
     }) 
     } 
    } 
    } 
}); 


$scope.loadMoreNews = function (counter) { 
    $scope.count += counter; 
    newsItems.getNews($scope.count).then(function (response) { 
     $scope.newsItems.push.apply($scope.newsItems, response.data); 
    }); 
};