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 相关文章推荐
基于jQuery的合并表格中相同文本的相邻单元格的代码
Apr 06 Javascript
javascript跑马灯悬停放大效果实现代码
Dec 12 Javascript
JS获取浏览器版本及名称实现函数
Apr 02 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
浅谈Javascript的静态属性和原型属性
May 07 Javascript
js实现仿Windows风格选项卡和按钮效果实例
May 13 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
js控制台输出的方法(详解)
Nov 26 Javascript
详解Vue 如何监听Array的变化
Jun 06 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
实例讲解JavaScript 计时事件
Jul 04 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
原生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最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
用Python PIL实现几个简单的图片特效
2019/01/18 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
学python安装的软件总结
2019/10/12 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
计算机应用毕业生自荐信
2013/10/23 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
《比尾巴》教学反思
2016/02/24 职场文书