v-html中使用filters

Vue2.0的过滤器只能应用在{{ }}和v-bind中,不再支持v-html中使用,如果要在v-html中使用过滤器,怎么办呢?

解决方法有三种:

1、使用全局方法

定义方法

methods: {
    formatTrend(val) {
      let trend = 'up';
      if(val.indexOf('-') > -1){
        trend = 'down';
        val = val.substr(1);
      }
      return `<i class="trend ${trend}"></i>${val}`;
    }
}

调用方法

<span v-html="formatTrend(value)"></span>

2、使用computed属性,当监听到数据发生变化的时候,会立即执行计算,并返回结果

定义原变量

data() {
      return {
	trendText: ''
	}
}

定义计算后的变量

computed: {
    trendHtml: function () {
    let trend = 'up' ,val = this.trendText;
      if(val.indexOf('-') > -1){
        trend = 'down';
        val = val.substr(1);
      }
      return `<i class="trend ${trend}"></i>${val}`;
  }

显示变量

<span v-html="trendHtml"></span>

3、使用$options.filters

定义filter

formatTrend(val) {
      let trend = 'up';
      if(val.indexOf('-') > -1){
        trend = 'down';
        val = val.substr(1);
      }
      return `<i class="trend ${trend}"></i>${val}`;
    }
export default {
formatTrend
}

引入filter

import { formatTrend } from '../../utils/filter.js'

调用filter

<span v-html="$options.filters.formatTrend(value)"></span>

Vue ,可以使用 `filters` 过滤器对数据进行格式化,但是它不能直接用于表格筛选。要实现表格的日期筛选,需要在表格使用自定义筛选器。 在 Vue ,可以使用 `Vue.filter` 方法定义一个全局过滤器。但是在这种情况下,我们需要为每个表格定义不同的筛选器,因此最好将筛选器定义为组件的局部方法。 下面是一个示例代码,其包含一个名为 `dateFilter` 的自定义筛选器,以及一个名为 `DateTable` 的表格组件,该组件使用了 `el-date-picker` 组件来实现日期筛选: ```html <template> <div> <el-date-picker v-model="filterDate" type="date" placeholder="Select date" @change="handleFilterChange" ></el-date-picker> <el-table :data="tableData" :filters="filters"> <el-table-column prop="date" label="Date" :filters="dateFilters"></el-table-column> <el-table-column prop="name" label="Name"></el-table-column> <<!-- other columns --> </el-table> </div> </template> <script> export default { data() { return { filterDate: null, tableData: [ { name: 'John', date: '2021-01-01' }, { name: 'Mary', date: '2021-01-02' }, { name: 'Bob', date: '2021-01-03' }, <!-- more data --> ], }; }, computed: { dateFilters() { const set = new Set(); this.tableData.forEach((item) => { set.add(item.date); }); return Array.from(set).map((value) => ({ text: value, value })); }, filters() { return { date: (value, row) => { if (!this.filterDate) { return true; } return value === this.filterDate; }, }; }, }, methods: { handleFilterChange() { this.$refs.table.clearFilter(); this.$refs.table.addFilter('date', this.filterDate); }, }, }; </script> ``` 在上面的代码,我们定义了一个名为 `dateFilter` 的自定义筛选器,它将日期格式化为 `YYYY-MM-DD` 格式。然后,在表格组件,我们使用 `el-date-picker` 组件来实现日期筛选,并在表格列使用 `filters` 属性来指定筛选器选项。同时,我们使用 `filters` 属性为表格添加了一个名为 `date` 的筛选器,其过滤方法根据日期筛选表格数据。 最后,在 `handleFilterChange` 方法,我们使用 `$refs` 引用表格并清除之前的筛选器,然后将新的日期筛选器应用到表格。 这样就实现了基于日期控件的表格筛选功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值