最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • element ui中表格过滤filters请求后台接口

    正文概述 掘金(李妮妮)   2020-12-01   1703

    场景

    点击过滤条件,根据过滤条件请求接口,刷新列表

    如果表格没有分页,要不要重新请求接口必要性不大,如果存在分页,则需要调用接口

    element ui中表格过滤filters请求后台接口

    注意:直接看方法二,直接看方法二,直接看方法二,

    方法一存在bug(当每个筛选条件的返回结果均不为空时有效,虽然使用了防抖,但由于防抖时间设置的影响,可能会存在多次请求接口的问题,当点击某个筛选条件返回结果为空时,再点击其他的,这个时候是不是有效就得看造化了。。。)

    方法一:使用:filter-method="filterHandler"

    html(部分主要代码)

    <el-table-column        prop="from"        label="系统创建属性"        :filters="[          { text: '全部', value: '全部' },          { text: '是', value: '是' },          { text: '否', value: '否' },        ]"        :filter-method="filterHandler"//筛选函数        filter-placement="bottom-end" //筛选框的位置        :filter-multiple="false"    //是否多选?false代表否,默认不写为true      ></el-table-column>
    

    js(过滤函数)

    // 过滤      async filterHandler(value) {        if (value === '是') {          this.value = 1;        } else if (value === '否') {          this.value = 2;        } else {          this.value = 0;        }      },
    

    js(监听value的变化)

        watch: {      value: {        handler(newValue, oldValue) {          if (newValue != oldValue) {            this.refreshSystemAttribute();//value改变时刷新列表,即重新请求接口            this.setOneGet();     // 防抖函数          }        },        deep: true,      },    },
    

    安装loadsh

    npm i --save lodash
    

    js(防抖函数)

        created() {      let _ = require('lodash'); // 引用      // 此处refreshSystemAttribute是在methods中定义的函数, 500单位为毫秒,延迟500毫秒再调用      this.setOneGet = _.debounce(this.refreshSystemAttribute, 500);    },
    

    js(请求接口主要函数)

     let res = await this.$api.Metadata.getSystemAttributeList({          page: page,          limit: page_size,          search: this.search,          from: this.value,          isFilter: this.isFilter        });
    

    方法二:使用@filter-change="change"

    使用场景:当表格中只有单个筛选项时

    element ui中表格过滤filters请求后台接口

    html(部分主要代码)

        <el-table      :data="userTagList"      border      style="width: 100%"      @selection-change="handleSelectionChange"      @filter-change="change"    >      <el-table-column        prop="status"        label="状态"        :filters="[          { text: '全部', value: '全部' },          { text: '未添加', value: '未添加' },          { text: '已添加', value: '已添加' },          { text: '忽略', value: '忽略' },        ]"        filter-placement="bottom-end"        :filter-multiple="false"      ></el-table-column>    </el-table>
    

    js(过滤函数)

          // 过滤      change(value) {        for (let key in value) {          if (value[key][0] === '未添加') {            this.status = 2;          } else if (value[key][0] === '已添加') {            this.status = 1;          } else if (value[key][0] === '忽略') {            this.status = 3;          } else if (value[key][0] === '全部') {            this.status = 4;          }        }      },
    

    js(监听status的变化)

        watch: {      status: {        handler(newValue, oldValue) {          if (newValue != oldValue) {            this.refreshUserTagList();//status改变时刷新列表,即重新请求接口          }        },        deep: true,      },    },
    

    js(请求接口主要函数)

    let res = await this.$api.KnowledgeMap.getUserTagList({          page: page,          limit: page_size,          search: this.search,          status: this.status,        });
    

    使用场景:当表格中有多个筛选项时

    element ui中表格过滤filters请求后台接口

    html(部分主要代码)

        <el-table      :data="systemTagList"      border      style="width: 100%"      @selection-change="handleSelectionChange"      @filter-change="change"    >      <el-table-column        prop="from"        label="系统创建属性"        :filters="[          { text: '全部', value: '全部' },          { text: '是', value: '是' },          { text: '否', value: '否' },        ]"        filter-placement="bottom-end"        :filter-multiple="false"        :column-key="one"   //特殊标识,必须存在,名字随意      ></el-table-column>      <el-table-column        prop="isFilter"        label="筛选维度"        :filters="[          { text: '全部', value: '全部' },          { text: '是', value: '是' },          { text: '否', value: '否' },        ]"        filter-placement="bottom-end"        :filter-multiple="false"        :column-key="two"   //特殊标识,必须存在,名字随意      ></el-table-column>    </el-table>
    

    js

     data() {      return {        one: 'one',   //名字随意        two: 'two',   //名字随意
            value: 0,        isFilter: 2,      };    },
    

    js(过滤函数)

          change(value) {        if (value.one) {          if (value.one[0] === '是') {            this.value = 1;          } else if (value.one[0] === '否') {            this.value = 2;          } else {            this.value = 0;          }        } else {          if (value.two[0] === '是') {            this.isFilter = 1;          } else if (value.two[0] === '否') {            this.isFilter = 0;          } else {            this.isFilter = 2;          }        }      },
    

    js(监听value、isFilter的变化)

        watch: {      value: {        handler(newValue, oldValue) {          if (newValue != oldValue) {            this.refreshgetAttributeList();          }        },        deep: true,      },      isFilter: {        handler(newValue, oldValue) {          if (newValue != oldValue) {            this.refreshgetAttributeList();          }        },        deep: true,      },    },
    

    js(请求接口主要函数)

    let res = await this.$api.Metadata.getSystemAttributeList({          page: page,          limit: page_size,          search: this.search,          groupId: this.id,          from: this.value,          isFilter: this.isFilter,        });
    

    总结

    方法2更好,不需要防抖,每次变化时只会请求一次


    起源地下载网 » element ui中表格过滤filters请求后台接口

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元