以何为家
以何为家
  • 发布:2020-10-12 14:17
  • 更新:2021-05-08 14:40
  • 阅读:3527

数据修改页面不刷新问题记录

分类:uni-app

一般来说页面和数据是双向绑定的,数据改变页面就会改变,可是有时候页面数据改变后,APP上页面不刷新,但微信小程序开发工具上又是可以的,一般这种情况是在数组使用时遇到的,记录几个遇到的情况和解决办法:
一、数组值修改,页面样式不刷新。解决:尝试用this.$set()方法,里面三个参数,第一个传这个数组,第二个传要修改的那项的下标,第三个传修改后的那项内容。下面会根据数组中的state状态加载不同的样式:

this.model.answer[j].state = !this.model.answer[j].state;  
this.$set(this.model.answer, j, this.model.answer[j])  
//页面根据变量加载不同样式  
<view  :class="item.state?'answer_yes':'answer_no'">{{item.name}}</view>

二、有一次我用this.$set()方法,数据改变后页面上的样式任然不刷新,奇怪的是,另一个页面一模一样的代码,刷新又正常,代码同上。询问了一圈,有老铁告诉我可能是数据太深了,然后我试着将answer数据从model中提取出来,新建一个数组来绑定页面:

this.model.answer[j].state = !this.model.answer[j].state;  
this.$set(this.model.answer, j, this.model.answer[j])  
//在上面的基础上添加下面这种操作,把页面上绑定的数组换成current_answer,测试时把上面一句注释竟然又失效了   
this.current_answer = this.model.answer

最后就正常了,坑啊。。。。
三、还有一种情况是定义的全局变量,如果页面绑定的是定义在其他文件下的全局变量,变量修改的时候,页面也不会刷新,这种情况就在当前页面再定义一个变量,这个变量在页面加载的时候接收全局变量的值,然后页面绑定这个变量就好了。

0 关注 分享

要回复文章请先登录注册

2***@qq.com

2***@qq.com

参考下我的博客,我也遇到同样问题,各种方法都试了,最后这么解决的
https://yfx000.blog.csdn.net/article/details/116526618
2021-05-08 14:40