VUE v-for循环中每个item节点动态绑定不同函数的实例


Posted in Javascript onSeptember 26, 2018

一. 业务场景:

一个title 处 可能有 一个或多个按钮, 按钮对应不同的响应事件

二. 思路 :

按钮个数 根据传入的数据length 来循环渲染, 每条数据对应的事件名称 通过动态绑定

三. 封装组件

1. 视图层面

VUE v-for循环中每个item节点动态绑定不同函数的实例

2. 代码部分

2.1 结构部分

VUE v-for循环中每个item节点动态绑定不同函数的实例

<!-- 多个button组件-->
<titleAddBtn :addBtnList="addBtnList" @clkCallBk="listenCall"></titleAddBtn>

2.2 JS部分

2.2.1 引入组件

import titleAddBtn from '@/components/titleAddBtn'

组件注册:

components: { titleAddBtn },

2.2.2 传入数据

data() {

return {
 addBtnList: [
{
 title: '添加1',
 icon: 'el-icon-circle-plus-outline',
 methods: 'addItem'
},
{
 title: '添加2',
 icon: 'el-icon-circle-plus-outline',
 methods: 'addItem2'
},
{
 title: '添加3',
 icon: 'el-icon-circle-plus-outline',
 methods: 'addItem3'
}
 ],

}
 }

2.2.2 传入数据说明:

title 是 按钮上的文字,

icon 传入 elementui icon部分 提供的 class名

methods 传入 在父组件中 定义的 对应按钮的函数方法名

2.2.3 监听 子组件点击哪个按钮(促发哪个函数)

methods: {

listenCall(methodsWords) {
 console.log('methodsWords', methodsWords)
 this[methodsWords]()
},
 }

2.2.4 这里的 this[methodsWords] 动态方法 指向 数据定义中的 addBtnList 的 methods

还需要添加

methods: {

addItem() {
 console.log(11)
},
addItem2() {
 console.log(112)
},
...
}

四. 总结

最后的 this[methodsWords]() 调用 不能够写成 this.methodsWords()

五. 封装的组件部分

<template>
 <div>
 <div v-for="item in addBtnList" class="add-btn" @click="clkCall(item.methods)">
 <i class="add-btn-i" :class="item.icon"></i>
 <div>{{item.title}}</div>
 </div>
 </div>
</template>
<script>
 export default {
 name: 'titleAddBtn',
 props: ['addBtnList'],
 methods: {
 clkCall(methodsWords) {
 this.$emit('clkCallBk', methodsWords)
 }
 }
 }
</script>

以上这篇VUE v-for循环中每个item节点动态绑定不同函数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
由浅到深了解JavaScript类
Sep 08 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 Javascript
js检测浏览器版本、核心、是否移动端示例
Apr 24 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
jquery单选框radio绑定click事件实现方法
Jan 14 Javascript
jquery对象和DOM对象的相互转换详解
Oct 18 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
Django使用多数据库的方法
Sep 06 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
Jul 16 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 Javascript
JavaScript实现动态生成表格
Aug 02 Javascript
vue大型项目之分模块运行/打包的实现
Sep 21 Javascript
原生JS实现简单的无缝自动轮播效果
Sep 26 #Javascript
Vue中控制v-for循环次数的实现方法
Sep 26 #Javascript
web页面和微信小程序页面实现瀑布流效果
Sep 26 #Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 #Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 #Javascript
在vue 中使用 less的教程详解
Sep 26 #Javascript
vue如何进行动画的封装
Sep 26 #Javascript
You might like
收藏的一个php小偷的核心程序
2007/04/09 PHP
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
php中神奇的fastcgi_finish_request
2011/05/02 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python中Threading用法详解
2017/12/27 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
python并发和异步编程实例
2018/11/15 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python调用webservice接口的实现
2019/07/12 Python
Python 日期与时间转换的方法
2020/08/01 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
培训楼经理岗位责任制
2014/02/10 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
争先创优活动总结
2014/08/27 职场文书
节约用电倡议书
2015/04/28 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
python 远程执行命令的详细代码
2022/02/15 Python
MySQL数据库表约束讲解
2022/06/21 MySQL
vue实现简易音乐播放器
2022/08/14 Vue.js