vue中過濾器filters的使用


vue中過濾器filters的使用

過濾器主要是對數據進行過濾處理,對原始數據進行篩選后再進行展示。

主要用在兩個地方:

雙花括號插值

{{ message | handleData }}

v-bind表達式

<div v-bind:id="message | handleData"></div>

過濾器的格式

局部過濾器的默認格式為:

filters: {
	handleData: function (value) {
		if(value>=60)     return '及格'
		else   		  return '不及格'
	}
}

全局過濾器的默認格式為(在main.js添加,並不常用):

Vue.filter('handleData', function(value) {
		if(value>=60)   return '及格'
		else   	        return '不及格'
})
new Vue({
	...
})

當全局過濾器與局部過濾器,會采用局部過濾器

過濾器串聯

{{ message | filterA | filterB }}

執行順序為:

1.執行filterA過濾器,將表達式message的值作為參數傳入filterA中

2.執行filterB過濾器,將filterA處理后的返回值作為參數傳入filterB中

3.得到的返回值就是過濾后的最終結果。

過濾器接收多個參數

{{ message | filterA('a','b')}}

這里filter接受了三個參數,表達式message的值,字符串'a',字符串'b'。當然也可以接受更多的參數,只需在filterA()中添加即可

具體實例

<template>
  <div class="app-container">
    <div class="the-container">
      <el-table
        ref="table"
        v-adaptive="{bottomOffset: 85}"
        :data="tableData"
        height="50px"
      >
        <el-table-column
          prop="date"
          label="日期"
          show-overflow-tooltip
        />
        <el-table-column
          prop="name"
          label="姓名"
          show-overflow-tooltip
        />
        <el-table-column
          label="地址"
          show-overflow-tooltip
        >
          <div slot-scope="{ row }">
            <div>
              {{ row.address }}
            </div>
          </div>
        </el-table-column>
        <el-table-column
          prop="nation"
          label="民族"
          show-overflow-tooltip
        >
          <div slot-scope="{ row }">
            <div>
              {{ row.nation |nation }}
            </div>
          </div>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>

<script>
export default {
  name: 'Index',
  filters: {
    nation: (value) => {
      let nation = ''
      switch (value) {
        case 1:
          nation = '漢族'
          break
        case 2:
          nation = '滿族'
          break
        case 3:
          nation = '潑水族'
          break
        case 4:
          nation = '藏族'
          break
        default:
          break
      }
      return nation
    }
  },
  data() {
    return {
      tableData: [{
        date: '2016-05-02',
        name: '王虎',
        address: '上海市普陀區金沙江路 1518 弄',
        nation: 1
      }, {
        date: '2016-05-04',
        name: '小虎',
        address: '上海市普陀區金沙江路 1517 弄',
        nation: 2
      }, {
        date: '2016-05-01',
        name: '王小',
        address: '上海市普陀區金沙江路 1519 弄',
        nation: 3
      }, {
        date: '2016-05-03',
        name: '王小虎',
        address: '上海市普陀區金沙江路 1516 弄',
        nation: 4
      }]
    }
  },
  methods: {
  }
}
</script>

<style lang="scss" scoped>
  .app-container{
    height: 100%;
    background-color: #f1f1f1;
  }
  .the-container{
    height: 100%;
    padding: 20px;
    background-color: #fff;
  }
</style>

箭頭函數

例子中用箭頭函數取代普通的函數,因為箭頭函數表達式的語法比函數表達式更簡潔,並且沒有自己的this,arguments,super或new.target。箭頭函數表達式更適用於那些本來需要匿名函數的地方,並且它不能用作構造函數。

基本的語法

(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
//相當於:(param1, param2, …, paramN) =>{ return expression; }

// 當只有一個參數時,圓括號是可選的:
(singleParam) => { statements }
singleParam => { statements }

// 沒有參數的函數應該寫成一對圓括號。
() => { statements }

想要了解箭頭函數的其他用法可以參考箭頭函數的文檔:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM