Vue Popover 弹出框在table列表中的使用

本职是纯Java后端, 最近刚学Vue的萌新, 说得不对勿喷, 如果有更好的建议, 希望能在评论里看到你的留言

背景:

最近在自己做一个前端项目 (纯个人娱乐), 在table中希望对删除操作做一个弹窗提醒, 最初直接从ElementUI库中找到Popover弹窗代码之后, 直接复制到项目中, 遇到了如下的坑:

1. 列表中每一项都需要单独的visible变量来控制展示, 如果直接粘过去, 会导致点击删除按钮后, 全部一起展示. 全部一起关闭, 这明显是不符合初衷的.

项目是使用Vue-cli搭建的,  使用Vue UI创建的项目以及插件, 目录结构如下:

Vue Popover 弹出框在table列表中的使用

 

思考:

为了解决这个办法, 百度Google都看了一下, 发现使用Vue组件开发是一个比较好的思路, 虽然我还不是很会很高深的知识, 但是照葫芦画瓢, 还是能模仿一下的.

 

解决:

Step1: 在components中添加一个删除确认弹窗组件 (代码中有一段注释):

Vue Popover 弹出框在table列表中的使用

<template>
  <!-- 组件代码 -->
  <span>
    <el-popover ref="popover5" placement="top" width="160" v-model="visible">
      <p>{{content}}</p>
      <div style="text-align: right; margin: 0">
        <el-button size="mini" type="text" @click="visible = false">取消</el-button>
        <el-button type="danger" size="mini" @click="deleteItem(id)">确定</el-button>
      </div>
    </el-popover>
    <el-button v-popover:popover5 type="text">删除</el-button>
  </span>
</template>

<script>
module.exports = {
  // 组件名称, 在外部可以使用<delete-confirm-popover></delete-confirm-popover>来使用组件
  name: "delete-confirm-popover",
  // 组件的属性, 可以从外部传入相应的值进来
  props: ["content", "id"],
  data: function() {
    return {
      // 每个组件自己的控制变量
      visible: false
    };
  },
  methods: {
    deleteItem(id) {
      // 具体需要执行的逻辑, 我还不是很会回调的写法, 所以就直接这样完成具体逻辑
      console.log("删除" + id);
      this.visible = false;
    }
  }
};
</script>



Step2: 在需要引入的位置 使用组件 ()

<el-table-column label="操作">
    <template slot-scope="scope">
        <el-button type="text" @click="detail(scope.row.id)" style="margin-right: 10px">查看</el-button>
        <!-- 使用组件, 并传值到组件中 -->
        <delete-confirm-popover content="确定要删除?" :id="scope.row.id"></delete-confirm-popover>
    </template>
</el-table-column>



<script>
// 引入组件
import DeleteConfirmPopover from "../../../components/popover/DeleteConfirmPopover.vue";

export default {
  data() {
    return {
      tableData: []
    };
  },
// 声明需要使用的组件
  components: {
    DeleteConfirmPopover
  }
}
</script>

 

Step3: 效果图

Vue Popover 弹出框在table列表中的使用Vue Popover 弹出框在table列表中的使用

 

结语:

如果以上办法不能帮助你解决问题, 可以留言, 我看到留言后会尽快回复. 萌新, 大虾们手下留情, 轻喷~