前阵时间写了一遍关于 "layui+vue实现select动态加载后台数据" 的文章,用 setTimeout + layui.form.render() 的方式来局部刷新的方式重新渲染页面,代码如下
var new Vue({
el:"#app",
data:{
items:null
},
mounted:function () {
this.details();
// 这是layui的方法
form.render();
},
methods:{
details:function(){
$.ajax获取数据成功后进行表单重新渲染
form.render();
}
}
});
上述代码在谷歌火狐等主流浏览器中运行一直也没问题,无意中在360兼容模式下打开,发现select竟无数据,试了半天没有找到解决方法,然后百度啊,谷歌啊,各种搜索引擎,终于解决了问题,看下面,
Vue updated生命周期函数:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
无论是组件本身的数据变更,还是从父组件接收到的 props 或者从vuex里面拿到的数据有变更,都会触发虚拟 DOM 重新渲染和打补丁,并在之后调用 updated。
然后只需要在vue的updated里面重新再去走一下layui的表单重载就行了。
代码:
updated:function(){
layui.use(['form'], function(){
form.render();
}
}
就这样OK,完美解决。
本文介绍使用layui和Vue实现select动态加载后台数据时遇到的问题及解决方案。在360兼容模式下,select元素可能无法正确加载数据。通过在Vue的updated生命周期函数中调用layui的form.render()方法,可以解决此问题,确保跨浏览器兼容性。

6555

被折叠的 条评论
为什么被折叠?



