吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1201|回复: 19
收起左侧

[求助] Vue,获得ref实例的问题?

[复制链接]
cqwcns 发表于 2022-10-17 13:32
本帖最后由 cqwcns 于 2022-10-17 13:34 编辑

如图和以下代码。
我创建了一个element-plus table,第一列设置了筛选。


现在的功能需求是筛选后,我可以通过点击【重置表格的筛选】按钮,调用element-plus table的方法clearFilter来清除table的筛选状态。
但调用方法前我需要先获得这个table的实例,我尝试使用ref,但不知道我写错了哪里,获取不到实例。


麻烦各位大佬指教。感谢。
微信图片_20221017132812.png

[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <head>
        <!-- style -->
        <link rel="stylesheet" href="https://unpkg.com/element-plus@2.2.17/dist/index.css" />
        <!-- Vue 3 -->
        <script src="https://unpkg.com/vue@3.2.40/dist/vue.global.js"></script>
        <!-- component library -->
        <script src="https://unpkg.com/element-plus@2.2.17/dist/index.full.js"></script>
    </head>
</head>

<body>
    <div id="app" style="width: 600px;">
        <el-table :data="tableData">
            <el-table-column v-for="(title,index) in tableHeader" :prop="title" :label="title"
                :filters="index?null:tableFilters" :filter-method="index?null:filterHandler" ref="myTable" />
            </el-table-column>
        </el-table>

        </br>
        </br>

        <el-button @click="clearTableFilter">重置表格的筛选</el-button>
    </div>
    <script>

        let that = null,
            { ref } = Vue,
            myTable = ref(),
            App = {
                data() {
                    return {
                        tableHeader: ['date', 'name', 'address', 'tag'],
                        tableData: [
                            {
                                date: '2016-05-03',
                                name: 'Tom',
                                address: 'No. 189, Grove St, Los Angeles',
                                tag: 'Home',
                            }, {
                                date: '2016-05-02',
                                name: 'Tom',
                                address: 'No. 189, Grove St, Los Angeles',
                                tag: 'Office',
                            }, {
                                date: '2016-05-04',
                                name: 'Tom',
                                address: 'No. 189, Grove St, Los Angeles',
                                tag: 'Home',
                            }, {
                                date: '2016-05-01',
                                name: 'Tom',
                                address: 'No. 189, Grove St, Los Angeles',
                                tag: 'Office',
                            }
                        ],
                        tableFilters: [
                            { text: '2016-05-01', value: '2016-05-01' },
                            { text: '2016-05-02', value: '2016-05-02' },
                            { text: '2016-05-03', value: '2016-05-03' },
                            { text: '2016-05-04', value: '2016-05-04' }
                        ]
                    }
                },
                methods: {
                    filterHandler(value, row, column) {
                        const property = column['property']
                        return row[property] === value
                    },
                    clearTableFilter() {
                        console.log('myTable', myTable);
                        myTable.clearFilter('date')
                    }
                }
            }
        const app = Vue.createApp(App);
        app.use(ElementPlus);
        app.mount("#app");
    </script>
</body>

</html>

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
88868 发表于 2022-10-17 13:44
提示: 作者被禁止或删除 内容自动屏蔽
54小字辈 发表于 2022-10-17 13:49
54小字辈 发表于 2022-10-17 13:51
多说一句,不清楚题主的水平,但从某种角度上说,vue3或者web开发还是需要开发者具有一定的能力的,以上问题其实如果去了解过web开发教程说着vue2/vue3/react 等库的文档,基本都会有相关说明
pengyw200888 发表于 2022-10-17 13:54
学习了,谢谢。
RootPotence 发表于 2022-10-17 14:23
[JavaScript] 纯文本查看 复制代码
const myTable = ref()
// 后续要操作表格,操作myTable.value,如
myTable.value.clearFilter('date')
 楼主| cqwcns 发表于 2022-10-17 14:37
88868 发表于 2022-10-17 13:44
myTable.clearFilter('date')   这里不应该这样写

没到这一步,获取实例元素就获取不到。
wc637700 发表于 2022-10-17 14:39
本帖最后由 wc637700 于 2022-10-17 14:40 编辑

你的 ref="myTable" 放在了 <el-table-column> 标签上,应该放在 <el-table> 标签上,另外ref声明的,就要用 myTable.value.*** 去执行方法

免费评分

参与人数 1热心值 +1 收起 理由
cqwcns + 1 谢谢@Thanks!

查看全部评分

头像被屏蔽
88868 发表于 2022-10-17 14:39
提示: 作者被禁止或删除 内容自动屏蔽
wc637700 发表于 2022-10-17 14:48
官方示例:https://element-plus.gitee.io/zh-CN/component/table.html#%E7%AD%9B%E9%80%89
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表