本節書摘來自華章出版社《angularjs深度剖析與最佳實踐》一書中的第2章,第2.7節,作者 雪狼 破狼 彭洪偉,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
我們在第1章中使用了多個系統内置的過濾器(filter),還寫了一個自定義過濾器,這裡我們再系統化的從理論層面講一下。
過濾器标準的定義方式是:
可以看出,過濾器是一個特殊的函數,它傳回一個函數,這個函數接收的第一個參數就是被過濾的變量,如使用{{1|myfilter}}時,這個input參數的值就是1,當這個值是個變量時,它的變化會導緻myfilter再次被執行。
過濾器還可以接收第二個參數,乃至第n個參數,如:
而使用者則通過{{1|myfilter:2:3:4}}的形式調用它。這種情況下,arg1的值為2,arg2的值為3,arg3的值為4。
從使用者的角度,我們可以把filter看做一個函數,它負責接收輸入,然後轉換成輸出。每當輸入參數發生變化時,它就被執行,其輸出會被視圖使用。
filter除了可以用在綁定表達式之外,還可以用在指令中通過值綁定的屬性,如
...。
由于其簡單靈巧,filter非常适合複用。官方提供的幾個filter就有很多種用法,讀者可以參照官方的api文檔和實戰篇的案例,自行嘗試用ng-repeat, filter, orderby的組合來實作具有前端過濾功能的表格,這有助于對過濾器的深入了解。