2014-10-05 85 views
0

因此,我正在嘗試在Angular中進行無限滾動。我的網頁上我想顯示的數據項正在由第三方API服務和URL看起來像:

http://example.com/item/data/?param=item&pagesize=100&page=1

現在我正在使用$ HTTP服務器成功ajax調用和我有創建一個指令,在滾動將加載更多的項目從網址。但我不能得到儘快更新URL,因爲我開始滾動我希望我的網址變成這樣:

http://example.com/item/data/?param=item&pagesize=100&page=1
http://example.com/item/data/?param=item&pagesize=100&page=2
http://example.com/item/data/?param=item&pagesize=100&page=3
http://example.com/item/data/?param=item&pagesize=100&page=4
....

不過每次我滾動網址就變成: http://example.com/item/data/?param=item&pagesize=100&page=1
http://example.com/item/data/?param=item&pagesize=100&page=1
http://example.com/item/data/?param=item&pagesize=100&page=1
http://example.com/item/data/?param=item&pagesize=100&page=1

這意味着頁面參數不會更新,或者即使它是S-HTTP從來沒有正確執行。有人可以告訴我如何更新$ http中的URL參數,該參數從參與者的API中提取數據。

代碼看起來大致類似如下:

var page = 1; 
     var url = 'http://example.com/item/data/?param=item&pagesize=100&page=' + page; 
     $http.get(url) 
      .success(function(data, status, config, headers) { 
       $scope.page = 1; 
       for (var i = 0; i < data.items.length; i++) { 
        $scope.totalTags = data.items; 
        $scope.page += 1; 

       } 

      $scope.loading = false; 
     }) 
      .error...//rest of the stuff 
+0

在你的代碼總是設置'page'或'$ scope.page'爲'1'? – Chandermani 2014-10-05 08:06:14

+0

@Chandermani:我想我在 上更新它(var i = 0; i Mike 2014-10-05 11:54:34

回答

1

的幾個問題與您的代碼:

  • VAR頁和$ scope.page是兩個不同的變量;您使用前者來選擇$ http請求中的頁面,但不會增加它。這就是爲什麼你總是得到第1頁。
  • 你的循環沒有做你想做的事情:你將數據替換一百次而不是將新數據附加到現有的集合,並且你增加了$ scope.page a百次而不是一次(但是你不使用$ scope.page,所以它什麼也不做,特別是當你每次檢索數據時都將它重新設置爲1)。

試試這個代碼片段,而不是:

$scope.page = 1; 
var url = 'http://example.com/item/data/?param=item&pagesize=100&page=' + $scope.page; 
$http.get(url) 
    .success(function(data, status, config, headers) { 
     for (var i = 0; i < data.items.length; i++) { 
      $scope.totalTags.push(data.items[i]); 
     } 
     $scope.page += 1; 
     $scope.loading = false; 
    }) 
    .error...//rest of the stuff 
+0

謝謝你的迴應,我非常專注於這一點,我完全搞砸了循環邏輯。但我認爲問題仍然是一樣的。網址不會更新。您的代碼正在從網址http://example.com/item/data/?param=item&pagesize=100&page=中獲取項目,並且一次又一次地添加相同內容。所以我一次又一次地得到相同的API響應。例如 [a,b,c]然後[a,b,c,a,b,c],則[a,b,c,a,b,c,a,b,c]應該是[a, b,C,d,E,F,G,H,I]。希望很明顯。 最後一行是$ scope.page沒有被添加和附加到URL,不知道如何實現 – Mike 2014-10-05 14:51:15

+0

你能顯示更多的代碼的最後一個版本嗎?這可能是非常小的事情,比如拼錯的變量是錯誤的。 – Sycomor 2014-10-05 17:31:43

+0

我把一些東西放在垃圾桶裏,但是我的問題不是可以重現的: http://jsbin.com/manaxafiqoje/1/edit?js – Mike 2014-10-05 17:42:52

0

單獨的URL和參數的功能,如何讓你的話,就使得它更容易更改您的參數。

var url="http://example.com/item/data/"; 
var params = { 
    param:"item", 
    pagesize:199, 
    page:page 
}; 
params.page = 2; 

$.get(url,params,function(data){}); 
+0

你說的是這樣的: http://jsbin.com/budufitebadu/2/edit 我沒有得到你的答案? – Mike 2014-10-05 07:44:49