我一直在試驗angular.js作爲處理可排序和可搜索的數據列表的一種方式。將Angular.js FilterBy應用於嵌套json屬性
使用此RailsCast上手http://railscasts.com/episodes/405-angularjs
然後通過過濾器的例子就在這裏http://docs.angularjs.org/api/ng.filter:filter
當時肅然起敬,當我有一些東西在幾分鐘內排序和篩選運行。因此,我似乎有一個理想的方法來呈現列表數據,這些數據可以通過跨每列進行篩選來排序和搜索...
直到我意識到過濾器似乎無法在使用'。'尋址的json嵌套屬性上工作。符號,例如我的客戶都有一個所有者,我想顯示他們的電子郵件地址並按照這個字段進行篩選 - 我的代碼的關鍵部分是這樣的。
<tbody ng-repeat="client in clients | orderBy:sort_by:reverse | filter:search">
<tr>
<td>{{name}}</td>
<td>{{owner.email}}</td>
<tr>
<input ng-model="search.name">
<input ng-model="search.owner.email">
owner.email被呈現並且可以被排序,但是它不會被過濾。我有一個解決方法:只允許每個包含關聯的一個屬性,並在關聯上進行搜索,例如search.owner過濾所有者的電子郵件,因爲這是我允許進入json的全部內容。這感覺像一個黑客。必須有適當的優雅的方式來做到這一點。它是什麼?
定義您自己的[自定義過濾器](http://docs.angularjs.org/guide/dev_guide.templates.filters.creating_filters)。您的自定義過濾器可以基於'search.owner.email'或其他任何您想要的標準/輸入進行過濾。 – 2013-03-26 22:05:29
謝謝馬克。我認爲自定義過濾器可以工作,但它不像僅僅能夠使用過濾器那樣優雅:只需通過爲列/屬性進行綁定輸入來過濾即可搜索任何列/屬性 - 這使我可以輕鬆地使用數組和塊自動生成代。 – blythburgh 2013-04-03 11:40:42