2014-11-21 32 views
0

我想創建自定義過濾器,這將改變數組新的數組與項目配對(我需要這個過濾器只顯示兩列項):

輸入:項目1,項目2,項目3,ITEM4等...]

結果:[ITEM1,ITEM2],[項目3,項目3],等等...]

我發現,這樣的finctionality的任何實現拋出錯誤:10達到$ digest()迭代。中止!

即使是簡單的回報不工作:

function pair() { 
    return function (items) { 
     return [[items[0], items[1]], [items[2], items[3]]]; 
    }; 
} 

M.B。還有另一種方法來分割收藏介紹列?

小提琴:http://jsfiddle.net/dmitry_zaets/Lae2hxr6/1/

+0

您需要顯示您使用的實際代碼(完整過濾器定義和使用)。 – hon2a 2014-11-21 10:20:52

+0

@ hon2a對不起,更新後的鏈接。 – 2014-11-21 10:29:07

回答

2

CAN NOT使用過濾方法來修改數據結構。修改數據會創建一個無限循環,其中對數據的每次修改均會導致$digest排隊另一個$watch(),而這又會將另一個調用排入過濾器,從而導致另一次數據修改,令人生厭。你收到的錯誤是Angular的說法,這可能會永遠持續下去,所以它會阻止它的發生。過濾器只能用於限制數組中項目的可見性,絕不能修改。

如果您需要以不同形式表示的數據,應該儘早處理。

此外,你的小提琴沒有正確顯示你的示例代碼。

+0

我已經更新了我的小提琴。 無論如何,謝謝你的回答! – 2014-11-21 10:50:10

0

過濾器在每次調用時都不能生成新數組(請參閱the documentation)。如果您確實需要在數據級別創建列,則需要創建(並保留)修改後的數據結構。如果您只需要在視圖中創建列,還可以使用其他方法(如fluid grid layouts)。

相關問題