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 网页黑白效果实现代码(兼容IE/FF等)
Apr 23 Javascript
javascript生成不重复的随机数
Jul 17 Javascript
通过点击jqgrid表格弹出需要的表格数据
Dec 02 Javascript
理解Javascript图片预加载
Feb 23 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
Dec 02 Javascript
用原生js做单页应用
Jan 17 Javascript
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
简单的Vue SSR的示例代码
Jan 12 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
Mar 08 Javascript
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
React-router4路由监听的实现
Aug 07 Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 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实现最简单的MVC框架实例教程
2014/09/08 PHP
对联广告js flash激活
2006/10/19 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
Python检测网站链接是否已存在
2016/04/07 Python
Python常用算法学习基础教程
2017/04/13 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
python+opencv实现车道线检测
2021/02/19 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
教书育人演讲稿
2014/09/11 职场文书
教师节标语大全
2014/10/07 职场文书
颐和园的导游词
2015/01/30 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
事业单位岗位说明书
2015/10/08 职场文书