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 相关文章推荐
将jQuery应用于login页面的问题及解决
Oct 17 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
jQuery实现可编辑的表格实例讲解(2)
Sep 17 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
如何高效率去掉js数组中的重复项
Apr 12 Javascript
基于Turn.js 实现翻书效果实例解析
Jun 20 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
Jul 22 Javascript
如何理解Vue的render函数的具体用法
Aug 30 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
Vue.js组件props数据验证实现详解
Oct 19 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的网址
2006/11/25 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
python 自动提交和抓取网页
2009/07/13 Python
Python的randrange()方法使用教程
2015/05/15 Python
Python判断字符串与大小写转换
2015/06/08 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python实现的购物车功能示例
2018/02/11 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
python3去掉string中的标点符号方法
2019/01/22 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
优秀员工个人的自我评价
2013/11/29 职场文书
美容院店长岗位职责
2014/04/08 职场文书
买卖协议书范本
2014/04/21 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
小学教师节活动总结
2015/03/20 职场文书
导游词之包公祠
2019/11/25 职场文书
pycharm无法安装cv2模块问题
2022/05/20 Python