vue 利用element的Table 表格实现自制的穿梭框(可以高度自定义)

1.
先看效果图:
在这里插入图片描述
在这里插入图片描述
2.
其实可以从最后的效果图看出这个自制的穿梭框,只是由两个table表格和两个按钮组成,只需要写其中逻辑事件即可完成穿梭框的效果,其中的事件主要分为“选中”,“穿梭”和“删除”,其实也只是关于数组的增,删,改,查这些基本操作。这篇博文主要参考了这位博主的文章:添加链接描述,看不懂我的博文可以到这位博主的文章下去看看,具体代码如下:

首先是左边的框框:
HTML:

<!-- 左边框框 -->
          <div class="transferbox">
            <div class="topbox">
              <span style="color:#1E90FF;font-size:16px;font-weight: 550;">待选设备</span>
            </div>
            <div class="level searchbox">
              <el-input v-model="input" placeholder="请输入内容" style="width:300px" />
              <el-button type="primary" style="margin:0 0 0 20px">搜索</el-button>
            </div>

            <el-table
              ref="multipleTable"
              :data="currentPageData"
              highlight-current-row
              tooltip-effect="dark"
              height="460"
              style="width: 100%;height:460px;cursor:pointer;"
              :row-style="setColor"
              @current-change="lineClick"
            >
              <el-table-column
                label="日期"
                width="430"
              >
                <template slot-scope="scope">{
   {
    scope.row.date }}</template>
              </el-table-column>
            </el-table>

其中要重点注意:row-style="setColor"和@current-change=“lineClick”,这两个触发的事件分别是:选中改变颜色和选中点击的选项的数据。

中间的两个按钮:
HTML:

<!-- 中间按钮 -->
          <div class="vertical center3 centrebtn">
            <el-button type="primary" icon="el-icon-arrow-right" @click="singleSel()" />
            <el-button type="primary" style="margin:20px 0 0 0" icon="el-icon-d-arrow-right" @click="mutiSel()" />
          </div>

右边的框框:
HTML:

 <!-- 右边框框 -->
          <div class="transferbox">
            <div class="topbox">
              <span style="color:#1E90FF;font-size:16px;font-weight: 550;">已选设备</span>
            </div>

            <el-table
              ref="multipleTable"
              :data="yxData"
              tooltip-effect="dark"
              height="500"
              style="width: 100%;height:500px;cursor:pointer;"
            >
              <el-table-column
                label="日期"
                width="360"
              >
                <template slot-scope="scope">{
   {
    scope.row.date }}</template>
              </el-table-column>
              <el-table-column label="操作" width="70">
                <template slot-scope="scope"
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue穿梭(Transfer)组件通常用于在两个列表之间进行数据的转移和选择。如果你想要在穿梭中添加搜索功能,可以使用Vue的计算属性和过滤器来实现。 首先,你可以在穿梭组件中添加一个输入,用于输入搜索关键字。然后,使用计算属性来过滤列表中的数据,只显示与搜索关键字匹配的项。 下面是一个简单的示例代码: ```vue <template> <div> <input type="text" v-model="keyword" placeholder="输入关键字搜索"> <el-transfer filterable :filter-method="filterMethod" :data="data" :target-keys="targetKeys" @change="handleChange" ></el-transfer> </div> </template> <script> export default { data() { return { keyword: '', data: [], // 穿梭的数据源 targetKeys: [], // 已选项的key }; }, computed: { filteredData() { const keyword = this.keyword.toLowerCase(); return this.data.filter(item => item.label.toLowerCase().includes(keyword)); }, }, methods: { filterMethod(query, item) { return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1; }, handleChange(targetKeys) { this.targetKeys = targetKeys; }, }, }; </script> ``` 在上面的示例中,我们使用了Element UI库中的`el-transfer`组件,并配置了`filterable`属性以开启过滤功能。然后,我们通过`filter-method`属性指定了一个过滤方法`filterMethod`,该方法用于判断每一项是否匹配搜索关键字。在计算属性`filteredData`中,我们根据搜索关键字对数据进行过滤操作。 当用户输入关键字时,过滤方法`filterMethod`会自动调用,根据返回值(true或false)来判断是否显示该项。最后,我们在`@change`事件中监听选项的变化,将选中的项保存到`targetKeys`中。 这样,你就可以在Vue穿梭中添加搜索功能了。根据你的实际需求,你可能需要对示例代码进行适当的修改和调整。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值