2013-02-21 70 views
1

所以我有一個scope.data與我的對象數組。該數組的數據在表中顯示,並且是有序的x屬性。在表中的顯示完美,但scope.data對象的自我沒有排序,以反映表顯示的是什麼......有什麼辦法讓該對象也排序爲排序選項?angularJS orderBy未反映在原始範圍

+0

我已經回答了爲什麼它不起作用,但是,如果您包含一些代碼或更多細節,我可能會特別告訴您如何對該數組進行排序。 – 2013-02-21 00:14:07

回答

3

代替將過濾器在你的模板scope.data的,你可以在你的控制器應用過濾器來代替:

而不是

控制器:

$scope.data = [data array]; 

模板:

{{ data | orderBy:x }} 

更改爲

控制器:

// Inject $filter into controller 
$scope.data = $filter('orderBy')('x'); 

模板:

​​

數據綁定

如果您data陣列傳遞,可以通過處理更新設置監視功能來檢查原始數組更改,然後自動應用到當前的$ scope.data屬性。

+2

只是FYI,你也可以注入orderBy過濾器本身,如果你想對實際的依賴更具體:'函數MyCtrl($ scope,orderByFilter){$ scope.sortedData = orderByFilter($ scope.data,'x' ); ' – 2013-02-21 01:07:08

+0

函數調用$ filter沒有爲我工作。我使用了'$ scope.data = $ filter('orderBy')($ scope.data,'x');' – Steve 2013-04-22 06:26:13

+0

如果我的數組有孩子呢?我如何訂購父母和孩子? – David 2015-09-24 22:35:04

3

OrderBy不對作用域的變量排序,而是對它的顯示方式進行排序。如果您希望在$範圍內更改,您將需要使用JavaScript對數組進行排序。