vue中给el-radio添加tooltip并实现点击跳转方式

 更新时间:2023年04月13日 10:29:00   作者:透过代码观世界  
这篇文章主要介绍了vue中给el-radio添加tooltip并实现点击跳转方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

给el-radio添加tooltip并实现点击跳转

<el-tooltip :disabled="toolTipDisable" placement="bottom" effect="light">
    <div slot="content" @click="goToRout()">{{toolTipContent}}</div>
    <el-radio label="3">New Youk</el-radio>
</el-tooltip>


goToRout(){
   let routeData = this.$router.resolve({name: '/your url', params: {active:'1'}});
   window.open(routeData.href, '_blank');
}

说明:

(1)toolTipDisable:可控制tooltip是否可用

(2)slot=“content”:表示tooltip提示的内容指定已DOM格式插入到页面

(3)goToRout():路由跳转方法

(4)toolTipContent:提示的内容信息

element表格(el-table)自定义复选框(添加提示el-tooltip)

需求

表格想要存在禁用的行,用户想要有提示:为什么不可以勾选!!!(如下图)

实现

使用表格自带的复选框无法实现该功能,因此需要自定义复选框

html代码:

<el-table border :data="dataList">
    <el-table-column align="center">
        <!--下面是表头的复选框,使用插槽header。实现全选以及部分选择-->
        <template slot="header" slot-scope="{row}">
            <!--v-model绑定全选(isCheck)变量,indeterminate:绑定是否部分选择-->
            <el-checkbox v-model="isCheck" :indeterminate="indeterminate"
                         @change="handleCheckAllChange"></el-checkbox>
        </template>
        <template slot-scope="{row}">
            <!--这里在复选框可用的时候禁用,不可用的时候使用el-tooltip进行提示-->
            <el-tooltip :disabled="提示框禁用的条件" :content="提示语" placement="left">
                <!--selection是表格中选中行的数据,类型为数组-->
                <!--这里建议不要使用@change实现父子数据间的通信-->
                <el-checkbox-group v-model="selection">
                    <!--此处的label是复选框右边显示的值,也是选中后的值。如果要一行的数据,直接使用row即可-->
                    <el-checkbox :disabled="复选框禁用条件" :key="row.id" :label="row.id"></el-checkbox>
                </el-checkbox-group>
            </el-tooltip>
        </template>
    </el-table-column>
</el-table>

js代码:

export default {
    data() {
        return {
            dataList: [],
            isCheck: false,
            indeterminate: false,
            enabledDataList: [],//这个指没有被禁用的行,进来组件的时候需要自己处理下
            checkedCount: 0,
            selection: []
        }
    },
    methods: {
        handleCheckAllChange(value) {
            this.selection = value ? this.enabledDataList : [];
            this.indeterminate = false;
            this.$emit('input', this.selection)
        },
        
    },
    watch: {
        selection: {
            handler(v) {
                console.log(v)
                //这里采用监听selection的变化而不是使用el-checkbox-group的change事件是因为:
                // 在change事件中往父组件发消息时,表单已经完成了异步的验证,所以无法在表单验证前将选中的值发给父组件
                if (this.enabledDataList.length) {//这个条件是判断需要有。。。。
                    let checkedCount = v.length;
                    this.isCheck = checkedCount === this.enabledDataList.length;
                    this.indeterminate = checkedCount > 0 && checkedCount < this.enabledDataList.length;
                }
                this.$emit('input', v)
            },
            immediate: true
        }
    }
}

上面是实现代码的demo,亲测可以实现功能。

这里存在一个大坑(表单验证)

这表格我需要复用,因此我写成一个组件的形式,因此需要使用$emit(‘input’,选中的行)进行传值,但是这里存在一个问题,就是:我本用<el-checkbox-group @change=“handleChange”>,在handleChange将改变的值传给父组件中的表格,在表格中我将该项设为必填,因此需要表单验证,但是这个的@change事件在表单验证之后才执行(我测试后得出的结果),因此选中一行的时候总会提示必填,即表单验证不通过。

解决办法:

使用watch监听selection变量

效果

小优化

若不想要显示复选框右边的文字(由el-checkbox 的label设置,必填要有值),可以使用visibility: hidden;

.el-checkbox__label {
    visibility: hidden;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue.config.productionTip = false 不起作用的问题及解决

    Vue.config.productionTip = false 不起作用的问题及解决

    这篇文章主要介绍了Vue.config.productionTip = false为什么不起作用,本文给大家分析问题原因解析及解决方案,需要的朋友可以参考下
    2022-11-11
  • 使用vue实现点击按钮滑出面板的实现代码

    使用vue实现点击按钮滑出面板的实现代码

    这篇文章主要介绍了使用vue实现点击按钮滑出面板的实现代码,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • Vue+EleMentUI实现el-table-colum表格select下拉框可编辑功能实例

    Vue+EleMentUI实现el-table-colum表格select下拉框可编辑功能实例

    这篇文章主要给大家介绍了关于Vue+EleMentUI实现el-table-colum表格select下拉框可编辑功能的相关资料,element-UI表格的使用相信大家都不陌生,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-07-07
  • Vue中指令v-model的原理及使用方法

    Vue中指令v-model的原理及使用方法

    v-model是Vue中的一个重要语法糖,主要用于实现数据的双向绑定,它通过结合value属性和input事件,简化了代码并提高了开发效率,文中通过代码介绍的非常详解,需要的朋友可以参考下
    2024-09-09
  • vue任意关系组件通信与跨组件监听状态vue-communication

    vue任意关系组件通信与跨组件监听状态vue-communication

    这篇文章主要介绍了vue任意关系组件通信与跨组件监听状态vue-communication,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Vue项目启动报错解决方法大全

    Vue项目启动报错解决方法大全

    这篇文章主要给大家介绍了关于Vue项目启动报错解决方法的相关资料,文中通过图文将解决的过程介绍的非常详细,对大家学习或者使用vue具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • webpack 3 + Vue2 使用dotenv配置多环境的步骤

    webpack 3 + Vue2 使用dotenv配置多环境的步骤

    这篇文章主要介绍了webpack 3 + Vue2 使用dotenv配置多环境,env文件在配置文件都可以用, vue页面用的时候需要在 webpack.base.conf.js 重新配置,需要的朋友可以参考下
    2023-11-11
  • vue 虚拟dom的patch源码分析

    vue 虚拟dom的patch源码分析

    这篇文章主要介绍了vue 虚拟dom的patch源码分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 使用Vue-cli 3.0搭建Vue项目的方法

    使用Vue-cli 3.0搭建Vue项目的方法

    这篇文章主要介绍了使用Vue-cli 3.0搭建Vue项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 干货!教大家如何选择Vue和React

    干货!教大家如何选择Vue和React

    Vue和React之间如何选择,这篇文章主要为大家详细介绍了Vue和React两者之间的相同之处,教大家该如何进行选择,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03

最新评论