【前端】vue2.x 配合 bootstrapTable 动态添加元素和绑定点击事件,事件无效 解决
背景:
使用bootstrap-table 表格插件时,每一行的最后一班会加操作按钮列。如果不加入vue的话,使用插件自己的列属性formatter:function(value, row, index){}即可解决,动态拼接的html元素和对应的点击事件都可以正常使用。问题来了,在使用vue时,点击事件不起作用了,F12后发现@click=""被解析成字符串了.这不就很扯淡了。
分析:
使用vue时,点击事件在vue初始化的时候进行编译的,但bootstrap-table中行操作事件和dom并没有加载进去。所以@click等事件自然而然的被当成字符串来玩了。
解决:
方案一:
上面说了,vue编译时还没加载,那咱能不能再bootstrap-table加载onLoadSucces的时候在进行编译什么的?我是将Vue根实例放在bootstrap-table 加载成功的函数里面了(可能不对!),最后没有成功
方案二:
表格操作dom和事件被识别成字符串了,Vue没有编译。咱能不能先让Vue把dom编译好了,咱再把dom插入到对应的节点上去。所以就引出 Vue的组件知识了。具体知识点还是各位自行查询琢磨。我这里给出解决结果。
代码:
不使用vue时bootstrap-table对操作列加载方式如下
{
title: '操作',
valign:'middle',
width:'300px',
formatter:function(value, row, index){
var ans ="";
ans+="<a href=\"javascript:\" class=\"btn btn-primary btn-xs\" role=\"button\"><i class=\"fa fa-pencil-square-o\"></i>编辑</a> ";
ans+="<a href=\"javascript:\" class=\"btn btn-success btn-xs\" role=\"button\"><i class=\"fa fa-eye\"></i>查看</a> ";
ans=ans+"<a href=\"javascript:\" class=\"btn btn-danger btn-xs\" role=\"button\"><i class=\"fa fa-trash\"></i>删除</a> ";
return ans;
}
},
使用Vue操作解决方案:
① 创建组件
var editComponent = Vue.extend({
template: "<div style='display:flex;'>" +
"<button @click=edit(id) class='btn btn-primary btn-xs'><i class='fa fa-pencil-square-o'></i>编辑</button> " +
"<button @click=detail(id) class='btn btn-success btn-xs'><i class='fa fa-trash'></i>查看</button> " +
"<button @click=del(id) class='btn btn-danger btn-xs'><i class='fa fa-eye'></i>删除</button>" +
"</div>",
props:['id'],
methods:{
edit:function (id) {
},
del:function (id) {
}
}
});
② 在bootstrap-table 加载成功后动态的将组件注入到对应的dom节点。
{
title: '操作',
valign:'middle',
width:'300px',
formatter:function(value, row, index){
// 由于id不能使用纯数字所有在id前面统一加上row字符串。取得时候截取即可
var id = "row"+row.id ;
var ans ="<div class='rowOperator' id="+id+"></div>";
return ans;
}
},
onLoadSuccess:function () {
//document.getElementById("testId").appendChild(new editComponent({propsData: {id : '魏正迪'}}).$mount().$el);
$(".rowOperator").each(function () {
var idTemp = $(this).attr("id");// row+id
new editComponent({propsData: {id : idTemp.substring(3)}}).$mount('#'+$(this).attr("id"));
});
}
注意点:
①、构建组件时要传入值时,借助props:['id']。但是真正创建组件时是使用propsDate进行值传入。
②、组件挂载时,使用.$mount('#id')这种方式(现在使用的)时,是直接将挂载点替换了。
【前端】vue2.x 配合 bootstrapTable 动态添加元素和绑定点击事件,事件无效 解决的更多相关文章
- Vue2.x与bootsrap-table动态添加元素和绑定事件无效
一.问题: 最近在使用vue与bootstrap-table结合生成表格时,按以前的经验----每列数据可用formatter:function(value,row,index){}进行一些其 ...
- jQuery动态添加元素并绑定事件
写网页的时候常常需要根据实际情况添加新的元素,然后这些新元素还需要绑定已有的事件,如:有一ul,点击其中某 li,根据其 id 或 value 等获取新的数据列表,并新建 ul 显示,新 ul 中的 ...
- JavaScript 动态添加div 绑定点击事件
1.动态添加div function cDiv(num){ var oDiv=document.createElement("div"); oDiv.className='divs ...
- jquerymobile动态添加元素之后不能正确渲染解决方法
jquerymobile动态添加元素之后有些不能被正确渲染的解决方法: listview: 添加 jq(".detail").listview(&quo ...
- jquerymobile动态添加元素之后
jquerymobile动态添加元素之后有些不能被正确渲染的解决方法:listview: 添加 jq(".detail").listview("refresh&quo ...
- Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法
Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 2014-03-27 11:44:46| 分类: Easy UI|举报|字号 订阅 可以使用$.parser.pa ...
- Jquery Mobile 动态添加元素然后刷新 转
Jquery Mobile 动态添加元素然后刷新 (2013-05-09 12:39:05) 转载▼ 标签: it 分类: Mobile jquery 表单元素每一个元素都有自己刷新的方法,每当改变它 ...
- angular.element方法汇总以及AngularJS 动态添加元素和删除元素
addClass()-为每个匹配的元素添加指定的样式类名after()-在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点append()-在每个匹配元素里面的末尾处插入参数内容att ...
- js 动态添加元素(div、li、img等)及设置属性
把一串 html 标签赋给一个 javascript 变量,除属性的值要用转义的双引号外,某些时候字符串还很长,显得有些复杂.如果用 js 动态添加元素,就不会有那么复杂的字符串出现,代码阅读性强一点 ...
随机推荐
- 从零学脚手架(六)---production和development拆分
development.production拆分 根据文件拆分 webpack打包时分为开发模式(development)和发布模式(production),在前面使用命令参数做了简单区分. 但这种方 ...
- 解决unbutu网络编程socket_tcp连接不上网络助手
unbutu开放指定端口 开放端口8080 sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 保存设置 iptables-save 在终端中输入 ...
- Hadoop企业开发场景案例,虚拟机服务器调优
Hadoop企业开发场景案例 1 案例需求 (1)需求:从1G数据中,统计每个单词出现次数.服务器3台,每台配置4G内存,4核CPU,4线程. (2)需求分析: 1G/128m = 8个M ...
- 使用 DD 命令制作 USB 启动盘
Windows 下有很多很好用的 USB 启动盘制作工具,比如 Rufus,但是 MacOS 下这个类型的工具就少了很多,这里记录下在 MacOS 中用 DD 命令制作 Linux USB 启动盘的操 ...
- 搞懂 ZooKeeper 集群的数据同步
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...
- 保姆级教程!使用k3d实现K3s高可用!
你是否曾经想尝试使用K3s的高可用模式?但是苦于没有3个"备用节点",或者没有设置相同数量的虚拟机所需的时间?那么k3d这个方案也许你十分需要噢! 如果你对k3d尚不了解,它的名字 ...
- 99%的Python用户都不知道的f-string隐秘技巧
f-string想必很多Python用户都基础性的使用过,作为Python3.6版本开始引入的特性,通过它我们可以更加方便地向字符串中嵌入自定义内容,但f-string真正蕴含的功能远比大多数用户知道 ...
- Ansible 教程
[注]本文译自:https://www.edureka.co/blog/ansible-tutorial/ 在阅读本文之前,你应该已经知道,Ansible 构成了 DevOps 认证的关键部分,它 ...
- ASP.NET扩展库之Http日志
最佳实践都告诉我们不要记录请求的详细日志,因为这有安全问题,但在实际开发中,请求的详细内容对于快速定位问题却是非常重要的,有时也是系统的强力证据.Xfrogcn.AspNetCore.Extensio ...
- 这样介绍Ribbon,从此任何问题也难不住你
Springcloud的核心组件之Ribbon 上篇文章详细介绍了springcloud的注册中心Eureka,那么这篇文章则会介绍springcloud的另外一个组件Spring Cloud Rib ...