vue 中数据没有同步渲染的解决方法
今天在做一个页面,遇到一个数据渲染不同步的问题,如下:
代码如下:原理:点击时,对应的banklist 的选项选项变为 true 选中状态
html:
- <div class="PayOrder">
- <div class="header">
- <span class="iconfont"></span>
- 支付首页
- </div>
- <div class="title">
- <h3>¥<span>{{odata.order_amount}}</span></h3>
- <p>{{oname}}</p>
- </div>
- <div class="bankpay" @click="paybankshow">
- <div>
- <span class="iconfont"></span>
- 快捷支付
- </div>
- <span v-show="!paybank" class="iconfont"></span>
- <span v-show="paybank" class="iconfont active"></span>
- </div>
- <ul class="bank" v-show="paybank">
- <li @click="checkedcurbank(item.bankname)" v-for="item in banklist" v-if="banklist.length>0">
- <div class="bankli" :style="{backgroundImage:'url(' + item.logoimgurl + ')'}"></div>
- {{item.ischecked}}
- <span v-show="item.ischecked" class="iconfont active"></span>
- </li>
- <li @click="toPayObligate">
- <div>
- <span class="iconfont"></span>
- 添加银行卡
- </div>
- </li>
- </ul>
- <ul class="pay">
- <li @click="weixinactive">
- <div>
- <span class="iconfont" style="color: #22b190;"></span>
- 微信支付
- </div>
- <span v-show="!weixin" class="iconfont"></span>
- <span v-show="weixin" class="iconfont active"></span>
- </li>
- <li @click="zhifubactive">
- <div>
- <span class="iconfont" style="color: #4d90dd;"></span>
- 支付宝支付
- </div>
- <span v-show="!zhifub" class="iconfont"></span>
- <span v-show="zhifub" class="iconfont active"></span>
- </li>
- </ul>
- <p class="msg">请您在提交订单后30分钟内完成支付,逾期订单会自动取消</p>
- <div v-if="isqueren" class="butt" @click="pay">确定支付</div>
- </div>
js:
- checkedcurbank(str){
- this.banklist.forEach(function(item){
- if(item.bankname==str){
- item.ischecked=true;
- }else{
- item.ischecked=false;
- }
- });
- this.weixin=false;
- this.zhifub=false;
- this.banklist.forEach(function(item){
- console.log(item.bankname+"----------"+item.ischecked);
- });
- console.log("weixin :" + this.weixin);
- console.log("zhifubao :" + this.zhifub);
- console.log(this.banklist);
- },
运行结果:点击两次,第一次点击招商银行,第二次点击建设银行
说明如下:第二次点击无法选中建设银行,从右边的控制台可以看出,实际上第二次点击时,建设隐行对应的选中状态已经变成了true,但是页面并没有同步出现选中按钮,这就是vue 中数据没有及时更新到页面上
下午百度了很多,但是没有找到原因,6点多的时候,在想,数据之所以没有更新到到页面上,是因为 vue 没有检测到数据变化,那么,我就给他来一点数据变化,把 banklist 中的数据取出来一条,然后再把这条取出的数据放进去,这样就有明显的数据变化了,变更后如下:以下代码中,增加了 16 / 17 行
- checkedcurbank(str){
- this.banklist.forEach(function(item){
- if(item.bankname==str){
- item.ischecked=true;
- }else{
- item.ischecked=false;
- }
- });
- this.weixin=false;
- this.zhifub=false;
- this.isqueren = false;
- var ocuritem = this.banklist.pop();
- this.banklist.push(ocuritem);
- this.banklist.forEach(function(item){
- console.log(item.bankname+"----------"+item.ischecked);
- });
- console.log("weixin :" + this.weixin);
- console.log("zhifubao :" + this.zhifub);
- console.log(this.banklist);
- },
运行结果:
可以看出,已经可以同步更新到页面了~~,以后,当数据不能同步更新时,我们可以对数据做以下类似的处理,先取出来一部分,再把这部分放回去,让 vue 明显的检测到数据的变化,这样就可以同步更新数据了
vue 中数据没有同步渲染的解决方法的更多相关文章
- Vue使用v-for显示列表时,数组里的item数据更新,视图中列表不同步更新的解决方法
由于初始化类型错误导致的不更新,代码是这样的: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 在vue中使用echars不能自适应的解决方法
<div class="echarts"> <IEcharts :option="bar" ref="echarts"&g ...
- vue中数据接收成功,页面渲染失败
1.vue中数据接收成功,页面渲染失败.代码如下 经过查找资料修改代码为 或是 原因是: 由于 JavaScript 的限制, Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如: ...
- 【java 多线程】多线程并发同步问题及解决方法
一.线程并发同步概念 线程同步其核心就在于一个“同”.所谓“同”就是协同.协助.配合,“同步”就是协同步调昨,也就是按照预定的先后顺序进行运行,即“你先,我等, 你做完,我再做”. 线程同步,就是当线 ...
- 浅析Mysql 数据回滚错误的解决方法
介绍一下关于Mysql数据回滚错误的解决方法.需要的朋友可以过来参考下 MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollbac ...
- 浅析Mysql数据回滚错误的解决方法
介绍一下关于Mysql数据回滚错误的解决方法.需要的朋友可以过来参考下 MYSQL的事务处理主要有两种方法. 1.用begin,rollback,commit来实现 begin 开始一个事 ...
- Oracle 18c 数据库中scott用户不存在的解决方法
Oracle 18c 数据库中scott用户不存在的解决方法 注:该文为转载 上面标题可直接跳转 原文地址:http://www.cnblogs.com/zangdalei/p/5482732.htm ...
- 记一次SpringBoot 开发中所遇到的坑和解决方法
记一次SpringBoot 开发中所遇到的坑和解决方法 mybatis返回Integer为0,自动转型出现空指针异常 当我们使用Integer去接受数据库中表的数据,如果返回的数据中为0,那么Inte ...
- Kafka实际使用过程中遇到的一些问题及解决方法
Kafka实际使用过程中遇到的一些问题及解决方法: 1.关于Kafka的分区: 开始使用Kafka的时候,没有分区的概念,以为类似于传统的MQ中间件一样,就直接从程序中获取Kafka中的数据. 后来程 ...
随机推荐
- post发送数据 mypost input 改变事件
//name=或者 "&name=" + "123" + "&data=" + "slice" (可以获 ...
- ARX中类型强制转换
比如 克隆 clone, 获得的是一个acrxobject, acrxobject *pobj=pployline->clone(); acdbpolyline *ppoly=acdbpolyl ...
- CAD插入jpg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 【vue】挂载点概念
## vue vue是mvvm模型,自底向上逐层应用,用于构建用户界面的渐进式框架. ### 挂载点.模板.实例 挂载点,vue仅处理挂点下面的内容(dom节点).挂载点内部的为模板. <div ...
- UTL
在PL/SQL中,UTL_FILE包提供文本文件输入和输出功能. 可以访问的目录通过初始化参数UTL_FILE_DIR设置. 注意:UTL_FILE只能读取服务器端文本文件,不能读取二进制文件.这时候 ...
- 2. Python中的基本输入、输出、格式化
本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本输入.输出.格式化 1. 输入 使用input([prompt])读取一行,将其转换为string类型并返回,input的 ...
- [luoguP2870] [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(后缀数组)
传送门 数据小的话贪心就行. 可以把这个串翻转再接到后面,再求后缀数组,求出 rank 数组就很简单了. ——代码 #include <cstdio> #include <iostr ...
- ES解除索引只读限制
kibana dev Tools 执行:PUT _settings { "index": { "blocks": { "rea ...
- 【ACM】NYOJ_69_数的长度_20130725
数的长度时间限制:3000 ms | 内存限制:65535 KB 难度:1描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出 ...
- 【SSH之旅】一步步学习Hibernate框架(一):关于持久化
在不引用不论什么框架下,我们会通过平庸的代码不停的对数据库进行操作,产生了非常多冗余的可是又有规律的底层代码,这样频繁的操作数据库和大量的底层代码的反复书写极大的浪费了程序人员的书写.就在这样一种情况 ...