首页 > 其他分享 >vue自定义指令的使用

vue自定义指令的使用

时间:2022-08-23 16:03:46浏览次数:89  
标签:el vue 自定义 button value 指令 按钮 hasHelp

1、背景:想通过自定义指令v-hasHelp控制页面右上角是否出现帮助按钮,点击按钮可以跳转外部链接。用自定义指令的目的是方便。

2、先在自己的项目中注册使用hasHelp

index.js
import hasHelp from './hasHelp'  //导入写好的hasHelp函数

const install = function (Vue) {
  Vue.directive('hasHelp', hasHelp)  //设置指定名称,并且和函数相互绑定
}

if (window.Vue) {
  window['hasHelp'] = hasHelp
  Vue.use(install); 
}

export default install
main.js
import permission from './directive/permission'

Vue.use(permission)

3、写好的hasHelp

hasHelp.js
export default {
    inserted(el, binding, vnode) {
        const { value } = binding; //指令传进来的值
        let button = document.createElement('button'); //创建按钮
        let text = document.createTextNode("帮助文档"); //一会给按钮加上名称
        let right = value[1] ? value[1] : 80 //按钮出现的水平位置
        let top = value[2] ? value[1] : 15 //按钮出现的垂直位置
        if (value && value instanceof Array && value.length > 0) {
            button.setAttribute("class", 'el-button el-button--warning el-button--mini') //给按钮加上elementUI样式
            button.setAttribute("style", `position: fixed; right: ${right}px; top: ${top}px; z-index: 999`) //给按钮加上其他样式
            button.onclick = function () { //给按钮加上点击事件
                window.open(value[0])
            }
            button.appendChild(text)
            if (value[0] !== 'false') {
                el.appendChild(button)
            }
        } else {
            throw new Error(`请按以下格式传值: v-hasHelp="[ 跳转网址, right(默认80), top(默认15) ]"`)
        }
    }
}

4、使用自定义指令

所在页面代码
  <xxx(组件标签)
    v-hasHelp="'www.baidu.com'"
  ></xxx(组件标签)>

标签:el,vue,自定义,button,value,指令,按钮,hasHelp
From: https://www.cnblogs.com/loveniko/p/16616553.html

相关文章

  • vue 大屏等比缩放适配方法
    大屏适配方案之一,根据设计稿尺寸,固定容器尺寸,内容完全按设计稿大小开发,可保持比例居中显示。//windowScale.jsexportfunctionuseIndex(appRef,fill){//*appRef......
  • vue3支付后不允许跳转回预付订单页
    场景:在电商项目中,订单页通常是用来展示给用户看的,当支付完成后,就不允许回退回来,防止二次支付以及商品信息错乱曾使用:router.push(`/member/pay?orderId=${res.data.resul......
  • vue路由配置和拦截
    router.beforeEach()一般用来做一些进入页面的限制。比如是否是登录状态,若没有登录,就不能进入某些页面,只有登录成功后,才有权限查看某些页面,简单地说,就是通过vue的路由来实......
  • vue大文件上传插件选哪个好?
    ​4GB以上超大文件上传和断点续传服务器的实现随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在很......
  • vue项目目录结构划分
     1.dist---编译之后的项目文件2.src---开发目录3.src/assets---静态资源src/assets/less---公共lesssrc/assets/img---图片资源4.src/components---组件5.src/pag......
  • 一天一个知识点-----vue项目简单引入svg
    项目背景:vue3.0+elementPlus注意项目结构,主要涉及的几个文件及文件夹---直接上代码----1.最开始是要下载包npminstallsvg-sprite-loader2.配置项目的配置文件vu......
  • vue3 单文件组件——父组件访问子组件的实例
    如果一个子组件使用的是选项式API 或没有使用 <scriptsetup>,被引用的组件实例和该子组件的 this 完全一致,这意味着父组件对子组件的每一个属性和方法都有完全的访问......
  • vue大文件上传组件选哪个好?
    ​一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到......
  • maven常用命令和maven指令生命周期
    maven常用命令clean:把我们自己编译好的项目中的信息删除掉,清除本地编译好的信息mvncompile:是吧srcmain下的方法进行编译放置在target目录下mvntest:编译测试下的ja......
  • Vue项目跑不起来 Uncaught SyntaxError: The requested module '/node_modules/.vit
    一:问题介绍vue项目运行跑不起来提示Browserslist:caniuse-liteisoutdated.Pleaserunnpxbrowserslist@latest--update-db遇到这个情况首先想到重新安装依赖重启项目......