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 js cookie的存储,获取和删除
Dec 29 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 Javascript
jQuery实现的经典滑动门效果
Sep 22 Javascript
js纯数字逐一停止显示效果的实现代码
Mar 16 Javascript
微信公众号 摇一摇周边功能开发
Dec 08 Javascript
Cookies 和 Session的详解及区别
Apr 21 Javascript
你有必要知道的10个JavaScript难点
Jul 25 Javascript
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
ng-zorro-antd 入门初体验
Dec 03 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
JavaScript 拖拉缩放效果
2008/12/10 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
社区交通安全实施方案
2014/03/22 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
婚礼答谢礼品
2015/01/20 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Python Pygame实战之塔防游戏的实现
2022/03/17 Python