kaola-fed / megalo

基于 Vue 的小程序开发框架
MIT License
1.63k stars 116 forks source link

百度小程序 v-model 值 被 replace 后 无法更新 #251

Open geminate opened 5 years ago

geminate commented 5 years ago

测试后发现微信小程序无此问题,只在百度小程序上复现。 使用的是 megalo-cli

geminate commented 5 years ago

刚刚和 百度小程序 官方沟通了一下,可以通过 两次 setData 的方式解决,对应 Megalo 的方式是 修改vendor.js 里的 doUpdate 方法:

原代码: function doUpdate() { var data = buffer.pop(); if (!isEmptyObj(data) && page.setData) { page.setData(data); } }

修改后: function doUpdate() { var data = buffer.pop(); if (!isEmptyObj(data) && page.setData) { var temp = {}; Object.keys(data).forEach(function(key){ temp[key] = data[key] + " "; }) page.setData({...temp},()=>{ page.setData({...data}) }); } }

elcarim5efil commented 5 years ago

百度小程序官方有没有说为什么要这么做?这样做会将数据更新的量增加一倍吧?

geminate commented 5 years ago

确实会增加一倍,有性能问题。但是官方也没有说明为什么要这么做,但是这个问题是存在的。