中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue中怎么創建并使用過濾器

發布時間:2021-07-21 13:46:57 來源:億速云 閱讀:182 作者:Leah 欄目:web開發

Vue中怎么創建并使用過濾器,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

定義和使用過濾器

使用 Vue,我們可以通過兩種不同的方式注冊過濾器:全局和本地。前者方式可以訪問所有組件中的過濾器,而后者則只能在定義該組件的組件內部使用過濾器。

過濾器是簡單的 JS 函數,它們將要轉換的值作為第一個參數,但是也可以傳入盡可能多的其他參數來返回該值的格式化版本。

全局過濾器

全局過濾器如下所示:

// 在此示例中,我們將注冊一個全局過濾器用來在價格前面添加美元符號:  // 聲明 Vue.filter('toUSD', function (value)) {   return `$${value}` } // 使用 <div id="app">   <span>{{ 351.99 | toUSD }}</span> </div>

過濾器定義必須始終在主Vue實例之上,否則會得到一個Failed to resolve filter: toUSD錯誤。

// DECLARATION Vue.filter('toUSD', function (value) {     return `$${value}`; });  new Vue({     el: '#app',       data: {         price: 351.99     } });  // USAGE <div id="app">   <span>{{ price | toUSD }}</span> </div>

本地過濾器

本地過濾器注冊到一個Vue組件作用域中,來看看如何創建:

// 在此示例中,我們將創建一個過濾器,將字符串變成大寫。  // 聲明 new Vue({     el: '#app',      data: {         name: 'scotch.io'     },      filters: {        // Filter definitions         Upper(value) {             return value.toUpperCase();         }     } });  // 用法 <div id="app">   <span>{{ name | Upper }}</span> </div>

如上面的示例中看到的那樣,本地過濾器作為“filters”屬性內的函數存儲在Vue組件中。我們可以注冊任意多個:

...     filters: {         Upper(value) {               return value.toUpperCase();         },         Lower(value) {             return value. toLowerCase();         },     } ....

附加參數設置

正如我們在本文引言中所提到的,過濾器可以根據需要接受任意多個參數

// 聲明 Vue.filter('readMore', function (text, length, suffix) {     return text.substring(0, length) + suffix; });  new Vue({     el: '#app',      data: {         text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non ab modi repellendus labore facere, fugiat ipsam quae accusantium commodi voluptas nesciunt dolor similique ipsum accusamus earum eligendi suscipit laborum quod.'     } });  // 用法 <div id="app">   <span>{{ text | readMore(10, '...') }}</span> </div>

在此示例中,我們創建了一個名稱為“readMore”的過濾器,該過濾器會將字符串的長度限制為給定的字符數,并且還會在其中添加所選擇的后綴。Vue.js  將要過濾的值作為第一個參數 text 傳遞,length 和 suffix 作為第二個和第三個參數傳遞。

鏈式過濾器

關于過濾器,我最喜歡的一點是能夠使用管道(|)符號將它們鏈接起來,并通過一系列轉換器運行單個值。再舉一個價格的例子,我們想限制價格的小數位以及加價格的單位。

// JS Vue.filter('toFixed', function (price, limit) {     return price.toFixed(limit); });  Vue.filter('toUSD', function (price) {     return `$${price}`; });  new Vue({     el: '#app',      data: {         price: 435.333     } });  // HTML  <div id="app">   <span>{{ price | toFixed(2) | toUSD }}</span> </div>

示例

接下來,我們通過一些事例來鞏固一下。

將 JS 值轉換為JSON字符串

// JS Vue.filter('json', function (value) {     return JSON.stringify(value); });  new Vue({     el: '#app',      data: {         user: {             username: 'johndoe',             email: 'john@example.com',             countryCode: 'U.K.'         }     } });   // HTML <div id="app">   <span>{{ user | json }}</span> </div>

從對象數組中提取屬性值列表

Vue.filter('pluck', function (objects, key) {     return objects.map(function(object) {          return object[key];     }); });  new Vue({     el: '#app',      data: {         users: [         {             "id": 4,             "first_name": "Eve",             "last_name": "Holt"         },         {             "id": 5,             "first_name": "Charles",             "last_name": "Morris"         },         {             "id": 6,             "first_name": "Tracey",             "last_name": "Ramos"         }         ]     } });   // HTML  <div id="app">   <span>{{ users | pluck('last_name') }}</span> </div>

返回給定索引處的元素

Vue.filter('at', function (value, index) {     return value[index]; });  new Vue({     el: '#app',      data: {         videos: ['Zi_XLOBDo_Y', 'sOnqjkJTMaA', 'sOnqjkJTMaA']     } });  // HTML <div id="app">   <span>{{ videos | at(1) }}</span> </div>

返回給定列表中的最小值

// JS Vue.filter('min', function (values) {     return Math.min(...values); });  new Vue({     el: '#app',      data: {         ages: [23, 19, 45, 12, 32]     } });  // HTML  <div id="app">   <span>{{ ages | min }}</span> </div>

隨機排列元素列表:

Vue.filter('shuffle', function (values) {     for (var i = values.length - 1; i > 0; i--) {         var j = Math.floor(Math.random() * (i + 1));         var temp = values[i];         values[i] = values[j];         values[j] = temp;     }     return values; });  new Vue({     el: '#app',      data: {         cards: ['Lahire', 'Judith', 'Lancelot', 'Alexandre']     } });  // HTML  <div id="app">   <span>{{ cards | shuffle }}</span> </div>

返回數組的第一個元素:

Vue.filter('first', function (values) {     if(Array.isArray(values)) {         return values[0];     }     return values; });  new Vue({     el: '#app',      data: {         consoles: ['PlayStation', 'Nintendo DS', 'Xbox', 'Atari']     } });  // HTML <div id="app">   <span>{{ consoles | first }}</span> </div>

返回數組的最后一個元素

Vue.filter('last', function (values) {     if(Array.isArray(values)) {         return values[values.length - 1];     }     return values; });  new Vue({     el: '#app',      data: {         consoles: ['PlayStation', 'Nintendo DS', 'Xbox', 'Atari']     } });  // HTML <div id="app">   <span>{{ consoles | last }}</span> </div>

返回過濾指定元素的數組的副本

Vue.filter('without', function (values, exclude) {     return values.filter(function(element) {         return !exclude.includes(element);     }); });  new Vue({     el: '#app',      data: {         unpaidInvoices: ['#1001', '#1002', '#1003', '#1004']     } });  // HTML <div id="app">   <span>{{ unpaidInvoices | without('#1003') }}</span> </div>

刪除數組中重復的元素

Vue.filter('unique', function (values, unique) {     return values.filter(function(element, index, self) {         return index == self.indexOf(element);     }); });  new Vue({     el: '#app',      data: {         recentViewedPosts: [13, 43, 23, 13, 43, 3, 98, 42, 65]     } });  // HTML  <div id="app">   <span>{{ recentViewedPosts | unique }}</span> </div>

在字符串后加上文本

Vue.filter('prepend', function (string, prepend) {     return `${string}${prepend}`; });  new Vue({     el: '#app',      data: {         greeting: 'Hello'     } });  // HTML <div id="app">   <span>{{ greeting | prepend(' World!') }}</span> </div>

重復一個字符串n次

Vue.filter('repeat', function (string, times) {     return string.repeat(times); });  new Vue({     el: '#app',      data: {         greeting: 'Hello'     } });  // HTML  <div id="app">   <span>{{ greeting | repeat(3) }}</span> </div>

關于 Vue中怎么創建并使用過濾器問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

泰兴市| 涞水县| 马龙县| 喀喇| 凤冈县| 墨玉县| 织金县| 罗定市| 灵石县| 安顺市| 馆陶县| 上思县| 同心县| 青冈县| 康定县| 唐山市| 建湖县| 即墨市| 双流县| 聂荣县| 泾阳县| 察雅县| 泽库县| 祁连县| 红原县| 屏山县| 内黄县| 明水县| 红河县| 柘城县| 伊金霍洛旗| 饶阳县| 蕉岭县| 化隆| 泾阳县| 修武县| 襄汾县| 竹山县| 于田县| 尚志市| 常山县|