点击el-select 选择项,el-table中显示相对应条目

5 篇文章 5 订阅
2 篇文章 0 订阅

想要的功能效果图如下:

当点击“应聘岗位”的下拉选择框后,表格里出现应聘岗位相对应的数据条目。 

需要说明的是,表格和分页我是单独抽离成一个子组件来写的,因此,点击父组件的下拉选项,表格出现相对应内容涉及到el-select的change事件父组件调用子组件方法。

父组件的核心代码

<template>

<!-- 这是子组件tableInfo -->
 <div class="panel_body">
<!-- ref可以拿到子组件中的data和去调用子组件中的方法 -->
          <tableInfo ref="first" />  
 </div>

<!-- 这是下拉框组件 -->
 <el-select placeholder="搜索" v-model="value" class="input_pull" @change="filterData">
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value"
        ></el-option>
      </el-select>
</template>

<script>
import tableInfo from './tableInfo'

export default {
  components: {
    tableInfo //子组件表格
  },
  data() {
    return {
      input: '',
      value: '',//下拉框选项绑定的值
options: [{
        value: 'gaoji',
        label: '高级工程师'
      },
      {
        value: 'chuji',
        label: '初级工程师'
      }
...
...
]
},
 methods: {
filterData(value) {//  下拉框选项change触发事件   
      this.$refs.first.searchResource(value)//父组件调用子组件的过滤方法
    }
}
}
</script>

子组件核心代码

<template>
<el-table
        :header-cell-style="headerColor"
        :data="showTable"
        :cell-style="cellStyle"
        highlight-current-row
      >
  <el-table-column type="index" :index="i=>i+1" prop="order" label="序号" align="center" />
<!--次要内容省略  -->
</el-table>

<!-- 分页组件 -->
  <div class="resource-page">
      <span class="page_num">共{{this.filterDataShow.length}}条</span>
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :page-sizes="[10,15,20,25]"
        :page-size="pageSize"
        :pager-count="7"
        layout=" prev, pager, next, sizes"
        :total="filterDataShow.length"
      ></el-pagination>
    </div>
</template>
<script>
export default {
 data() {
    return {
    filterDataShow: [], //储存符合条件的数据
    pagesize: 10,
    currentPage: 1,
tableData: [
        {
          name: '张三',
          age: 23,
          degree: '本科',
          connection: '18766546372',
          jobApplication: '高级工程师',
          jobValue: 'gaoji',
          graduateSchoo: '清华大学',
          sourceChannel: '51JOB',
          political: '团员',
          station: '未读',
          application: '...',
          see: false,
        },
        {
          name: '李四',
          age: 23,
          degree: '本科',
          connection: '18766546372',
          jobApplication: '初级工程师',
          jobValue: 'chuji',
          graduateSchoo: '北京大学',
          sourceChannel: '51JOB',
          political: '团员',
          station: '未读',
          application: '...',
          see: false,
        },
        ...
]
},
methods:{
searchResource(value) {
      this.currentPage = 1; //将当前页设置为1,确保每次都是从第一页开始搜  
      //筛选出tableData中,jobValue值与子组件传入的value值相等的条目,并赋值给空数组              
      this.filterDataShow = this.tableData.filter(item => item.jobValue === value)
      //筛选出tableData中,jobValue值与子组件传入的value值相等的条目,并赋值给空数组    
      if (value == undefined) {
        this.filterDataShow = this.tableData
      }
},
handleSizeChange(psize) {
      this.pagesize = psize;
    },
    handleCurrentChange(currentPage) {
      this.currentPage = currentPage;
    }
}
}
},
 mounted() {  
    this.searchResource();//在页面挂载后调用此方法,确保数据与页面发生了交互   
  },
  computed: {
    //showTable计算属性通过slice方法计算表格当前应显示的数据
    showTable() {  
      return this.filterDataShow.slice(
        (this.currentPage - 1) * this.pagesize,
        this.currentPage * this.pagesize
      );
    }
  }
}
</script>

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值