Vue filter filter and its application in table

  • 2021-08-12 01:57:29
  • OfStack

Usage:


//  In double curly braces 
{{ isActive | isActiveFitlter}}

//  In v-bind  Medium 
<div v-bind:id=" isActive | isActiveFitlter"></div>

1. Define native Filter in component


filters:{
  isActiveFitlter : (value)=>{
     return value===1?' Activate ':' Freeze '
  }
}

2. Define global filters before creating an Vue instance


Vue.filter('isActiveFitlter', (value)=>{
   return value === 1?' Activate ':' Freeze '
})
new Vue({
 // ...
})

3. Global Filter

1. Customize 1 js file, which can be placed in common folder


//filters.js
let isActiveFitlter = value => {
  return value===1?' Activate ':' Freeze '
}
export { isActiveFitlter }

2. main. js is introduced into filters. js


import * as filters from './assets/common/filters'
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

3. Use in the component

< span > {{ isActive | isActiveFitlter }} < /span >

Note:

Use in table requires the help of slots


<el-table-column prop="isActive" label=" Status ">
   <template slot-scope="scope">
     {{scope.row.isActive | isActiveFitlter}}
   </template>
</el-table-column>

Additional knowledge: vue filters array data to control whether a row 1 of el-table is displayed

Scenario: The data found out for the first time is received by list. Then I use the data in list for the second time, but I want to filter out the information of a selected user. At this time, I use filter function to filter list. It's simple. Take a note.


<el-dialog title=" Cloning rule " :visible.sync="cloneDialogVisible" width="600px">
   <el-table
    v-loading="listLoading"
    :data="list2" // Is bound to list2
    element-loading-text="Loading"
    empty-text=" There is no data "
    border
    fit
    stripe
    :row-key="getRowKey"
    @selection-change="handleSelectionChange"
>

// Filter data code 
showCloneRuleslView(user_id) {
    this.SourceUserId = parseInt(user_id)
    //filter Filter function uses 
    this.list2 = this.list.filter((data) => {
    // Filter out SourceUserId This data 
     return data.user_id !== this.SourceUserId
    })
    this.cloneDialogVisible = true
    console.log(this.SourceUserId)
  },

Related articles: