2014-12-02 59 views
0

試圖學習角度我得到了以下情況。在ajax請求返回時初始化數組

我的應用程序使用ASP.NET Web Api從複雜而慢速的數據庫返回產品對象。由於速度慢,我想頁面從服務器返回的對象。我創建了一個包含產品陣列,當前頁面和產品最後一頁的視圖模型。

對於顯示分頁小部件我想用我們的$ scope對象填充一個pagenumbers數組,以便與ng-repeat指令一起使用。

我試圖用一個函數填充數組:在我看來

(in pseudo) 
$scope.pages = function(){ 
     var pageNumberArray = []; 
     pagecounter = 1;  
     while (pagecounter <= maxPage){ 
      pageNumberArray.push(pageCounter); 
      pageCounter++; 
     } 
}; 

與NG重複使用此功能:

<ul> 
    <li ng-repeat="pageNr in pages()">{{pageNr}}</li> 
</ul> 

這似乎顯示工作,但我的開發人員工具控制檯顯示看起來合法的錯誤:[$ rootScope:infdig] 10 $ digest()迭代達到。中止!

如何在不從視圖中調用$ scope函數的情況下初始化$ scope數組(字段)。

p.s.當ajax請求返回一個新頁面時,數組應該重新初始化(不是所有的頁碼都顯示(當前頁面上方5下方,5)

回答

0

我認爲雙向綁定受到ng函數的干擾-repeat。

我要說$ scope.pages應該在你的範圍變數。如果您稍後更新這個變量,你的看法會自動的雙向恩典綁定更新。

因此,一些像這樣:

in controller:

$scope.pages = [] 
for (var i; i < maxPage; i += 1) { 
    $scope.pages.push(i); 
} 
$http.get(...).success(data){ 
    // update $scope.pages 
} 

鑑於:

<div ng-repeat="page in pages">{{page}}</div> 
+0

您好,感謝的快速答覆。肯定$ scope.pages應該是一個變量。在[]之後,我希望有一個分號(用於在C#中使用這個分號)。那麼for循環從哪裏來。我可以從無到有地調用某種邏輯嗎? (抱歉,因爲C#開發人員對javascript知之甚少)。 – 2014-12-02 21:36:13