Vue 提供了一種強大的方式來過濾和排序列表。過濾和排序是非常常見的需求,特別是在處理大量數據時,這些功能可以大大提高用戶體驗。
Vue 提供了幾種內置的列表過濾器,例如過濾器和排序器。使用列表過濾器是非常簡單的,只需要在模板中使用一個指令就可以實現。
<div v-for="item in items | filterA | filterB | orderBy 'created_at'"> {{ item.name }} </div>
上面的代碼中,我們使用了 3 個過濾器,分別是 filterA、filterB 和 orderBy。order 接收一個參數,用于指定排序的屬性。
我們可以自己編寫過濾器來滿足自定義需求。定義一個全局過濾器需要使用 Vue.filter() 方法來聲明一個過濾器。
Vue.filter('myFilter', function(value) { // do something here return value; });
在上面的代碼中,我們定義了一個名為 myFilter 的過濾器,它接收一個 value 參數,并返回處理后的結果。
在模板中使用自定義過濾器很簡單:
<div v-for="item in items | myFilter"> {{ item.name }} </div>
除了用管道符 | 連接過濾器之外,我們還可以在 JavaScript 中使用 computed 計算屬性來實現相同的效果。
<div v-for="item in filteredItems"> {{ item.name }} </div> // in the component computed: { filteredItems: function() { // do something here return filteredItems; } }
上面的代碼中,我們使用 computed 計算屬性來過濾列表。這種方式可以更好地組織代碼,提高可讀性。