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 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
jquery uploadify 在FF下无效的解决办法
Sep 26 Javascript
浅谈Javascript Base64 加密解密
Dec 28 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
JS模仿手机端九宫格登录功能实现代码
Apr 28 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
react-native android状态栏的实现
Jun 15 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
微信小程序实现限制用户转发功能的实例代码
Feb 22 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
魅力教师事迹材料
2014/01/10 职场文书
部队学习十八大感言
2014/01/11 职场文书
工作疏忽检讨书
2014/01/25 职场文书
大型会议策划方案
2014/05/17 职场文书
我爱我校演讲稿
2014/05/21 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
导游词格式
2015/02/13 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
应聘教师自荐信
2015/03/26 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
公司岗位说明书
2015/10/08 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js