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 相关文章推荐
DIY jquery plugin - tabs标签切换实现代码
Dec 11 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
Jquery插件分享之气泡形提示控件grumble.js
May 20 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
May 12 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 Javascript
Bootstrap基本样式学习笔记之标签(5)
Dec 07 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
angularjs使用directive实现分页组件的示例
Feb 07 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
May 10 Javascript
基于Two.js实现星球环绕动画效果的示例
Nov 06 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 数组黑名单/白名单实例代码详解
2019/06/04 PHP
表单提交验证类
2006/07/14 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
茶叶店创业计划书范文
2014/01/19 职场文书
新年主持词
2014/03/27 职场文书
员工生日活动方案
2014/08/24 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
利用js实现简单开关灯代码
2021/11/23 Javascript
Nginx反向代理、重定向
2022/04/13 Servers