Vue2.x与bootsrap-table动态添加元素和绑定事件无效
一、问题:
最近在使用vue与bootstrap-table结合生成表格时,按以前的经验----每列数据可用formatter:function(value,row,index){}进行一些其他的操作,动态拼接的html元素和绑定的方法事件都可正常执行,但在vue内使用后,拼接的元素显示正常,其绑定的方法却失效了。F12查看元素时发现绑定的@click=""被解析成字符串。
二、原因:
这是由于vue的生命周期导致的,vue在初始化时@click已编译,但此时boostrap-table动态添加的dom元素还未加载进来。导致@click并未绑定到dom元素上,被解析成字符串。
三、解决方案:
能不能在boostrap-table随vue一起初始化时,把动态添加dom元素同时挂载到vue实例,使得table和动态dom同时初始挂载
使用Vue操作解决方案:
① 创建组件
var toolsComponent = Vue.extend({
props:['id','isOpen','url','hostUrl'],
template: `<div style="display:flex;" >
<button class="btn btn-danger btn-sm" style="margin:0 0 0 auto" @click="remove(id,url)">删除</button>
<button :class="isOpen == true ? 'btn btn-success btn-sm': 'btn btn-warning btn-sm' " style="margin:0 0" @click="changeOpen(id,isOpen)" >{{isOpen == "true" ? "启用" : "停用"}}</button>
<a class="btn btn-primary btn-sm" style="margin:0 auto 0 0" :href="hostUrl + '/getNews/' +url " target="_blank">查看</a>
</div>
`,
methods:{
changeOpen(newsId,openParam){}
remove(id,url){}
}
})
② 在bootstrap-table 加载成功后动态的将组件注入到对应的dom节点。
{
title : '操作',
align : 'center',
valign: 'middle',
width: '15%',
formatter : function(value, row, index) {
var openParam = "";
if(row.isOpen == false){
openParam = "true";
}else if(row.isOpen == true){
openParam = "false";
}
var url = row.newsUrl;
var id = "row"+row.id;
var buttonStr = "<div class='rowOperator' id="+id+" isOpen="+openParam+" newsUrl='"+url+"'></div>";
return buttonStr;
}
}
onLoadSuccess:function(){
$(".rowOperator").each(function () {
var idTemp = $(this).attr("id");// row+id
var isOpen = $(this).attr("isOpen");
var newsUrl = $(this).attr("newsUrl");
new toolsComponent({propsData: {id : idTemp.substring(3),isOpen:isOpen,hostUrl:hostUrl,url:newsUrl}}).$mount('#'+$(this).attr("id"));
});
}
①、构建组件时要传入值时,借助props:['id']。但是真正创建组件时是使用propsDate进行值传入。
②、组件挂载时,使用.$mount('#id')这种方式(现在使用的)时,是直接将挂载点替换了。
③、onLoadSuccess:function(){}内可注入多个组件,且组件顺序要按照需要动态添加dom元素的列顺序对应
Vue2.x与bootsrap-table动态添加元素和绑定事件无效的更多相关文章
- jQuery动态添加元素并绑定事件
写网页的时候常常需要根据实际情况添加新的元素,然后这些新元素还需要绑定已有的事件,如:有一ul,点击其中某 li,根据其 id 或 value 等获取新的数据列表,并新建 ul 显示,新 ul 中的 ...
- jQuery1.9及其以上版本中动态元素on绑定事件无效解决方案
jQuery 1.9/2.0/2.1及其以上版本无法使用live函数了,然而jQuery 1.9及其以上版本提供了on函数来代替.本文讲解了jQuery on函数的使用方法,以及在使用jQuery函数 ...
- JQ动态生成节点绑定事件无效问题
最近做项目的时候遇见了一个问题,通过jq将动态节点绑定到dom节点上,并且为动态节点绑定方法,此方法再次为动态节点添加动态节点,但在刷新之后,动态节点上的方法失效了,过程为:创建动态节点->动态 ...
- jquery 动态创建的元素,绑定事件无效之解决方法
今天遇到一个问题,动态创建的元素,绑定事件无效,如下: js 代码如下: var OaddX = $('.detright div.duibi div.duibox ul li span'); // ...
- 关于动态生成dom绑定事件失效的原因
之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试 ...
- Jquery 在动态元素上绑定事件
弄了很久却没有弄出来,感觉没有错,但是动态元素上的事件根本就不响应,代码如下: <input type="button" id="btnyes" valu ...
- 关于 js 动态生成html 绑定事件失效的问题
在实际问题中,也只到使用新版jq 的on 事件 进行动态元素的绑定: 是这样 (但是依然没有效果——): $('dom节点').on('click',function(){}) 之后经过查阅发现:正确 ...
- 【前端】vue2.x 配合 bootstrapTable 动态添加元素和绑定点击事件,事件无效 解决
背景: 使用bootstrap-table 表格插件时,每一行的最后一班会加操作按钮列.如果不加入vue的话,使用插件自己的列属性formatter:function(value, row, inde ...
- jQuery使用on()绑定动态生成元素的事件无效
jquery on()方法是jquery1.7+后才使用的 由于需求:动态添加了以下代码 <tr class="pj" data-val="no"> ...
随机推荐
- 【RabbitMQ 实战指南】一 过期时间TTL
RabbitMQ 可以对消息和队列设置过期时间(TTL) 1.设置消息的TTL 目前有两种方式可以设置消息的TTL 第一种方式是通过队列属性设置,队列中所有消息都有相同的过期时间 第二种方式是对消息本 ...
- mysql8 的安装和设置
mysql8的安装 写在前面 与5.*的版本整体差不多,但是安装细节决定成败 下载 点击https://dev.mysql.com/downloads/file/?id=476233,也可以点这里,有 ...
- C++沉思录笔记 —— 序幕
#include <stdio.h> class Trace{public: void print(const char* s) { printf("%s\n", ...
- 微信公众号 访问403问题,样式错乱,js失效
我服了,还是那个微信公众号小项目. 这个项目用的是ssm+velocity 问题的是,有时候页面加载会乱,js,css都加载不出来. 这个问题也是很久了,前几天开会,那个甲方医院很不开心,说是要找下家 ...
- Md5与HMAC-SHA256
Md5签名算法 private string CalMd5(string str) { var md5 = MD5.Create(); var bs = md5.ComputeHash(Encodin ...
- linux小白的入门和目标。
大家好! 我是一名Linux小白,有幸来到马哥教育这个大家庭与各位同学在未来的五个月里一起学习Linux技术!尽管Linux对于刚接触到的新手会很难,但是我知道痛苦只是暂时的,满路荆棘的后面必是明亮宽 ...
- fenby C语言 P15
while(条件表达式){循环体} #include <stdio.h> int main(){ int i=1,sum=0; while(i<6) { sum=sum+i*3; i ...
- 热门开源网关的性能对比:Goku > Kong > Tyk
不多说,先展示最后的性能测试结果 我们将Goku与市场上的其他同类热门产品进行比较,使用相同的环境和条件,测试以下产品:Goku.Kong.Tyk.简单介绍下, Goku API Gateway (中 ...
- 基本的sql 语句
1,登陆数据库:mysql -u root -p2,退出数据库:exit quit ctr+d3,创建数据库:create database 数据库名 charset=utf84,使用数据库:use ...
- Unity调用Android相册
最近有一个项目有这个需求,让用户上传自己的交易凭证的截图,之前因为对调Android原生的东西不太熟悉,就先放了一边 因为项目已经上线,只不过是该功能未开放而已,那么现在为什么要写这篇博客呢,是因为. ...