自定义指令函数传参

FPGA DMA IP核使用指南 数据传输:支持从源地址到目标地址的数据传输。中断管理:提供中断信号,便于CPU处理传输完成事件。传输控制:支持传输大小、方向和暂停/恢复控制。 阅读详情

环境:

vue@2.6.6

问题:

  1. 绑定函数传参
  2. 传参多个多样
  3. 参数动态变化

方案:

1. 采用传对象方式(binding.value)
<el-button v-mydirective="{ fn: myFn, args: x }" type="text" size="small">测试</el-button>


const mydirective = {
  inserted: function (el, binding) {
    const args = binding.value.args;
	const fn = binding.value.fn;
	el.onclick = fn(args);
  }
}
export default mydirective

以上解决了问题1. 绑定函数传参,对于问题2. 传参多个多样可以给args一个对象,或者用数组

<el-button v-mydirective="{ fn: myFn, args: {x, y} }" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn({x, y}) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
    const args = binding.value.args;
	const fn = binding.value.fn;
	el.onclick = fn(args);
  }
}
export default mydirective;
<el-button v-mydirective="{ fn: myFn, args: [x, y] }" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn(x, y) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
    const args = binding.value.args;
	const fn = binding.value.fn;
	el.onclick = fn(...args);
  }
}
export default mydirective;

对于问题3. 参数动态变化,需要增加钩子函数update或者componentUpdated

<el-button v-mydirective="{ fn: myFn, args: [x, y] }" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn(x, y) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
    const args = binding.value.args;
	const fn = binding.value.fn;
	el.onclick = fn(...args);
  },
  update: function (el, binding) {
    const args = binding.value.args;
	const fn = binding.value.fn;
	el.onclick = fn(...args);
  },
}
export default mydirective;

update时候重置绑定的onclick函数,不能使用addEventListener、removeEventListener,因为移除不成功会导致执行两次。

2. 指令的参数(binding.arg)
<el-button v-mydirective:[x]="myFn" type="text" size="small">测试</el-button>


const mydirective = {
  inserted: function (el, binding) {
    const args = binding.arg;
	const fn = binding.value;
	el.onclick = fn(args);
  }
}
export default mydirective

以上解决了问题1. 绑定函数传参,对于问题2. 传参多个多样可以给指令参数一个对象,或者用数组

<el-button v-mydirective:[{x,y}]="myFn" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn({x, y}) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
    const args = binding.arg;
	const fn = binding.value;
	el.onclick = fn(args);
  }
}
export default mydirective;
<el-button v-mydirective:[[x,y]]="myFn" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn(x, y) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
    const args = binding.arg;
	const fn = binding.value;
	el.onclick = fn(...args);
  }
}
export default mydirective;

对于问题3. 参数动态变化,需要增加钩子函数update或者componentUpdated

<el-button v-mydirective:[[x,y]]="myFn" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn(x, y) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
    const args = binding.arg;
	const fn = binding.value;
	el.onclick = fn(...args);
  },
  update: function (el, binding) {
    const args = binding.arg;
	const fn = binding.value;
	el.onclick = fn(...args);
  },
}
export default mydirective;

update时候重置绑定的onclick函数,不能使用addEventListener、removeEventListener,因为移除不成功会导致执行两次。与第一种类似

注意:

  • 指令参数中不能有空格
  • 指令参数中不能有字符串(需要在data中定义成变量才可以使用)
3. 采用传箭头函数(binding.value)
<el-button v-mydirective="() => myFn(x)" type="text" size="small">测试</el-button>


const mydirective = {
  inserted: function (el, binding) {
	const fn = binding.value;
	el.onclick = fn;
  }
}
export default mydirective

以上解决了问题1. 绑定函数传参和问题3. 参数动态变化,对于问题2. 传参多个多样可以很随意了

<el-button v-mydirective="() => myFn({x,y})" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn({x, y}) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
	const fn = binding.value;
	el.onclick = fn;
  }
}
export default mydirective;
<el-button v-mydirective="() => myFn(x,y)" type="text" size="small">测试</el-button>
<script>
export default {
    data() {
       return {
           x: 1,
           y: 2,
       } 
    },
    methods: {
        myFn(x, y) {
            console.log(x);
            console.log(y);
        }
    }
}
</script>

const mydirective = {
  inserted: function (el, binding) {
	const fn = binding.value;
	el.onclick = fn;
  }
}
export default mydirective;

注意:

  • 可以使用addEventListener,但是其他生命周期里面removeEventListener移除不成功
  • 要想移除事件可以在unbind生命周期里面el.onclick=null;,此办法并不能移除addEventListener的事件
LabVIEW 调用MATLAB 进行图像处理的实现 程机械及设备的变形、振动、冲击、粗糙度、刚度和强度等特性,还可用在土木结构、水利设施的变形测量[4][5]。因此,该技术在机械、土木、水利、电器、航空航天、兵器工业及生物医学等领域的检测中具有非常重要的地位。将物面前方空间的散斑用摄像设备记录下来,当物体运动或由于受力而变形时,这些随机分布的散斑图也随之在空间按一定的规律运动,因此能用记录的散斑图在计算机上分析物体的运动和变形,这就是电子散斑技术。当物体的漫反射表面被激光照射时,漫反射的光波在物体表面的前方相互干涉,由于漫反射光的。 阅读详情

相关推荐

CentOS7环境下搭建 rsyslog 日志服务器,rsyslog+loganalyzer

1.系统环境部署 ip hostname 192.168.200.182 web 192.168.200.184 rsyslog-mysql 关闭防火墙、selinux、下载epel源 [root@web ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/f

sehn_的博客 3754

vue2.x 常用自定义指令,项目常用自定义指令

directives.js import Vue from 'vue' /** * 点击元素外 触发事件 * */ Vue.directive('clickoutside', { bind(el, binding, vnode) { function documentHandler(e) { // 这里判断点击的元素是否是本身,是本身,则返回 if (el.contains(e.target)) { return false }

csl125的博客 1379

半导体AMHS天车振动控制:从0.5G到超低振动的技术演进与工程实战

在先进晶圆厂中,自动化物料搬运系统(AMHS)的天车如同空中出租车,承担着晶圆盒(FOUP)在洁净室各工艺区间的转运任务。然而,当天车加减速、过弯或抓取时产生的机械振动通过轨道梁和建筑结构传递至光刻机等敏感设备,便可能直接威胁套刻精度与良率。传统被动减振方案依靠橡胶垫和弹簧,在0.5G指标时代曾行之有效,但在EUV光刻和先进制程面前已力不从心。主动振动控制技术通过传感器、控制器与作动器构成的闭环系统,在轨道吊点和机械手端实时输出反向力抵消振动,配合磁悬浮走行、轻量化结构及调度系统的路径优化,将振动从0.5G

weixin_29188043的博客 341

Vue知识点

指令 v-example="value" —— 这样可以传值到指令中,指令会根据value值来操作html <div v-if="boolValue">boolValue为true时会显示</div> v-example="'string'" —— 使用字符串作为表达式 <p v-html="'<h1>Hello word</h1>...

ALIN的博客 751

通达信+大智慧数据同步存调DLL

数据同步存调DLL(通达信版+大智慧版)

guleba的博客 2050

基于python获取网易云热门歌单及封面

先看一下图片背后的代码 非常好,里面歌单名字,id,以及封面图片都有了.在复制url的时候注意把/#删掉,要不然爬不了. import requests from lxml import etree url='https://music.163.com/discover/playlist' head={ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch

ziyuan12345678的博客 536

vue基础2

vue 动画 组件 插槽

zhangxiaobai___的博客 464

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

进程执行完成后,植被覆盖区域与裸地区域合并了。第三步:清除分割结果,点击“Image Objects”菜单栏,点击“Delete Level(s)”,选中“ResultLevel1”,点击”ok”删除棋盘分割结果。四叉树分割之后,有的正方形大一些,有的正方形小一些,大说明该区域的光谱特性更加均一,而小说明不太均一。Leve:选择运行算法的矢量层名称,这里选择四叉树分割算法得到的矢量层“ResultLevel2”。Image Layer weights:图层权重,这里设置为“1,1,1,1”。

蒹葭苍苍 4608

e.target.value和 binding.value 区别

都是在 Vue.js 中用于处理事件绑定时的值,但它们的使用场景和含义有所不同,分别用于普通的 DOM 事件和自定义指令。'传递给指令的值:'

weixin_63681863的博客 1387

AgentScope Java 2.0 项目实战:使用AgentScope Builder 构建企业级多租户 AI Agent 平台

本文基于 AgentScope Builder 源码深度分析,系统讲解多租户 AI Agent 构建平台的完整开发流程。涵盖 Spring Boot 3.x + WebFlux 后端架构、React 18 + TypeScript 前端实现、HarnessAgent 运行时、CompositeFilesystem 多租户隔离、SSE 流式对话、6 种 IM 渠道接入(钉钉/飞书/企微/GitHub/GitLab)、Git 与 Nacos 技能市场、JWT 认证、Docker Sandbox 隔离等核心技术。

program哲学 719

YOLO26涨点改进 | Conv篇/小目标改进 | AAAI 2025 FBRT-YOLO 两个轻量级FCM和MKP模块, 助力无人机航拍任务VisDrone、UAVDT和AI-TOD高效涨点

本文提出FBRT-YOLO26模型,通过引入两个轻量级模块FCM和MKP优化航拍图像检测性能。FCM模块通过特征互补映射解决小目标信息丢失问题,MKP模块利用多尺度卷积核增强目标感知能力。在VisDrone等数据集上的实验表明,该方法在精度和速度上均优于现有实时检测器。文章详细介绍了模块结构、核心代码实现及YAML配置文件修改方法,为航拍图像中的小目标检测提供了高效解决方案。该模型实现了检测精度与效率的良好平衡,具有实际应用价值。

Ai缝合怪、助力小伙伴高效发论文 369

自定义指令binding参数

注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作。指令的值可能发生了改变,也可能没有。之外,其它参数都应该是只读的,切勿进行修改。如果需要在钩子之间共享数据,建议通过元素的。:只调用一次,指令第一次绑定到元素时调用。:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中):指令所绑定的元素,可以用来直接操作 DOM。:所在组件的 VNode 更新时调用,:字符串形式的指令表达式。:指令绑定的前一个值,仅在。

qq_20623665的博客 1256

YOLOv8_obb训练流程-原理解析[旋转目标检测理论篇]

本文主要介绍了YOLOv8旋转目标检测的流程,介绍了标签的解码、预测结果的解码,以及如何理解旋转角度等内容,还介绍旋转目标检测框的正样本选取及Loss计算。

ice 4731

angularjs自定义指令函数传参

问题描述 在编写导入指令的时候,需要将函数绑定到指令中,并传入一个参数。 初步实现 首先指令的js文件如下,基本的绑定参数和绑定函数,没有什么说的: angular.module('webappApp') .directive('yunzhiImport', function() { return { ...

weixin_33851604的博客 2595

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Vue2之防抖_debounce封装函数&v-debounce自定义指令(传参/不传)

Vue2之防抖_debounce封装函数&v-debounce自定义指令(传参/不传) 目录 1、防抖 2、debounce- 封装函数 3、v-debounce全局自定义指令

Mr.小灰狼_随笔 2073

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

angularjs方法当做参数_angularjs自定义指令函数传参

问题描述在编写导入指令的时候,需要将函数绑定到指令中,并传入一个参数。初步实现首先指令的js文件如下,基本的绑定参数和绑定函数,没有什么说的:angular.module('webappApp').directive('yunzhiImport', function() {return {scope: {importing: '=', // 双向绑定import: '&', ...

weixin_28733651的博客 571

Vue3 -- 自定义指令directive

目录自定义指令directive局部自定义指令全局自定义指令自定义指令动态参数函数简写传参给自定义指令总结 自定义指令directive 在Vue中除了像v-model 和 v-show这样的默认内置的指令外, Vue 也允许注册自定义指令。自定义指令用于对DOM 元素进行底层操作。 局部自定义指令 局部自定义指令类似局部组件,组件使用directives进行引用,以输入框自动获得焦点为例。 // 注册一个局部自定义指令 v-focus,并写入钩子mounted,mounted接收绑定元素el。

Sun_blog 3569

vue 自定义指令中:addEventlistener监听事件函数传参,使用removeEventListener解绑

上面我们在自定义指令的时候在mounted中对dom添加事件监听,在beforeUnmount中进行事件解绑,但是第二个参数是匿名函数,所以add和remove的函数不是同一个所以参数不一致,remove是无效的。一般在组件中使用addeventlistener添加事件监听的时候,在组件销毁的时候都要使用removeEventListener进行销毁,不然会造成内存泄漏。上面这样写确实可以消除掉绑定的事件,但是无法进行参数的传递无法再函数中使用el,biinding等参数。

qq_38416502的博客 4447

vue调用函数怎么传参,VUE自定义指令如何外部调用及传值

目的:我想通过自定义指令实现表单验证我的代码逻辑是下面这样的template:methods中处理数据交互:methods: {submit: function () {// 跟后台通信...// 返回结果// 我想在这里直接调用指令validate中的fn.message方法}}局部自定义指令进行验证:directives: {validate: function (el, binding) {...

weixin_39581571的博客 1095

Vue进阶(九十一):自定义指令

除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。有的情况下,对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。 如何声明自定义指令? 就像vue中有全局组件和局部组件一样,他也分全局自定义指令和局部自定义指令。 let Opt = { bind:function(el,binding,vnode){ }, inserted:...

IT全栈 华强工作室 5552

Vue入门指南——自定义全局指令和局部指令

目录:一、简介二、如何自定义指令1.自定义全局指令2.自定义局部指令三、以传参的方式进行指令设置四、函数简写 一、简介 当开发需求做一个自动获取焦点事件的时候,我们最原生的做法就是通过获取元素来注册事件, document.getElementById("search").focus(); 然而在vue中并不提倡我们直接操作DOM元素。那我们该怎么办呢?这时候就需要我们自定义指令来实现这个功能了...

Potry Code的博客 1976

vue自定义指令

vue自定义指令

qq_68384236的博客 1369

Vue中 实现自定义指令(directive)生命周期及应用场景

/ 如果你只需要执行绑定的 bind 和 update 两个事件,vue指令定义也配置了简写方式.})new Vue({router,store,

muzidigbig的博客 8913

vue2render函数中使用自定义指令

我们在template模板中使用自定义指令如下。在render函数中我们可以这样写,如下。dep是指令修饰符 modifiers。deptId 是value 传参。info-card是指令名称。

weixin_45730243的博客 333

vue自定义指令 页面加载触发点击事件 (传参调用函数)

vue页面加载调事件,传参 <button @click = aaa(bbb) v-trigger v-show = 'false'>按钮</button> var vm = new Vue({ el: "#financingCheck", // 自定义指令 自动触发点击事件 v-trigger directives:{ trigger:{ i

cvvvvvvvvvv的博客 1600

vue3自定义指令

在组件内部使用directives选项来注册局部自定义指令。<template>// 局部自定义指令// 指令钩子函数,在元素挂载后执行// 让元素获取焦点el.focus()</script>在上述代码中,定义了一个名为v-focus的局部自定义指令,当绑定该指令的元素挂载到 DOM 后,会自动获取焦点。在应用实例中使用方法来注册全局自定义指令,这样在整个应用中都可以使用该指令。// 全局自定义指令el.focus()})在main.js中注册了全局的v-focus。

把代码调成柠檬味 957

前端研发总结

学习总结

weixin_55209909的博客 579
上一篇: 小程序自动化
下一篇: element表格多选和单选、选中高亮处理、保存多页选中记录和翻页回显选中
xiaojinglyd
博客等级 码龄9年 6粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值