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实现Sleep函数的代码
Mar 04 Javascript
js实现iframe动态调整高度的代码
Jan 06 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
May 19 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
Oct 17 Javascript
javascript实现input file上传图片预览效果
Dec 31 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
Sep 17 Javascript
javascript简易画板开发
Apr 12 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
Feb 12 Javascript
使用Bootstrap打造特色进度条效果
May 02 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 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
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
php实现点击可刷新验证码
2015/11/07 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
js三种排序算法分享
2012/08/16 Javascript
js写一个字符串转成驼峰的实例
2013/06/21 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
Vue实现简单的留言板
2020/10/23 Javascript
python定时器使用示例分享
2014/02/16 Python
使用python为mysql实现restful接口
2018/01/05 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
九年级体育教学反思
2014/01/23 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
元旦联欢会感言
2014/03/04 职场文书
法人代表任命书范本
2014/06/05 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
高质量“欢迎词”
2019/04/03 职场文书
js之ajax文件上传
2021/05/13 Javascript
linux下安装redis图文详细步骤
2021/12/04 Redis