element组件,table组件里面嵌套popover组件,点击出现三个popover组件

发布于 2022-09-12 13:53:57 字数 2764 浏览 18 评论 0

<el-table
        :data="tableData"
        border
        style="width: 100%">
      <el-table-column
          fixed
          prop="date"
          label="日期"
          width="150">
      </el-table-column>
      <el-table-column
          prop="name"
          label="姓名"
          width="120">
      </el-table-column>
      <el-table-column
          prop="province"
          label="省份"
          width="120">
      </el-table-column>
      <el-table-column
          prop="city"
          label="市区"
          width="120">
      </el-table-column>
      <el-table-column
          prop="address"
          label="地址"
          width="300">
      </el-table-column>
      <el-table-column
          prop="zip"
          label="邮编"
          width="120">
      </el-table-column>
      <el-table-column
          fixed="right"
          label="操作">
        <template slot-scope="scope">
          {{scope.$index}}
          <el-popover
              placement="bottom"
              title="标题"
              width="200"
              v-model="tableData[scope.$index].isShow"
              trigger="click"
              content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
<!--            <el-button @click="cancel">取消</el-button>-->
            <el-button slot="reference" @click.stop="handleClick(scope.$index)">click 激活</el-button>
          </el-popover>
        </template>
      </el-table-column>
    </el-table>

<script type="text/ecmascript-6">
export default {
  name: "index",=
    data () {
      return {
        tableData: [{
          date: '2016-05-03',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333,
          isShow: false
        }, {
          date: '2016-05-02',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-04',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-01',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }]
      }
    },
    methods: {
      cancel(scope) {
       this.tableData.forEach((item) => {
         item.isShow = false;
       })
      },
      handleClick(row) {
        console.log("handleClick");
        row.isShow = true;
      }
    }
};
</script>

点击click激活按钮,会出现三个popover

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那支青花 2022-09-19 13:53:58

定位到是表格中fixed属性导致的,删除该属性表现正常,应该是fixed属性是通过复制列来实现的,两个fixed相当于多了两列,加上原先的那一列,正好展示3个。
此外和楼上一样这个click参数不对,要使用click改变el-popover的状态,trigger应该设置为manual,还有就是直接设置为true会一直展示popover的哦。
正常的demo
回答有帮助还望采纳,点赞,不甚感激。

我们只是彼此的过ke 2022-09-19 13:53:57

我感觉你的代码里面有几处问题。
(1)tableData中只有第一个有isShow,其他都没有这个参数。
(2)定义的方法与调用的函数有矛盾。

@click.stop="handleClick(scope.$index)"
handleClick(row) {
        console.log("handleClick");
        row.isShow = true;
      }

handleClick函数调用时的参数scope.$index只拿到了当前行的index。index没有isShow属性。
所以建议这些改成scope.row。
修改之后我感觉应该问题不大。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文