vue修改对象的属性值后页面不重新渲染的实例


Posted in Javascript onAugust 09, 2018

最近项目在使用vue,遇到几次修改了对象的属性后,页面并不重新渲染,场景如下:

HTML页面如下:

<template v-for="item in tableData">
    <div :class="{'redBorder':item.red}">
    <div>{{ item.name}}</div>
    <div>
     <el-button size="mini" @click="clickBtn(item.id)" type="info">编辑</el-button>
     <p class="el-icon-error" v-show="item.tip"></p>
    </div>
    </div>
</template>

js部分如下:

<script>
 export default {
  data() {
  return {
   tableData:[{id:0,name:"lili",red:false,tip:false}]
  }
  },
 
  methods: {
 clickBtn(id){
 this.tableData[id].red=true;
 this.tableData[id].tip=true; 
 }
 }
}
</script>

绑定的class是加一个红色的边框,如下:

.redBorder{
 border:1px solid #f00;
}

在项目中点击button后不出现红色边框和提示错误框,打开debugger查看,发现运行到了这里却没有执行,tableData中的值并没有改变,这个方法在以前使用时会起作用,可能是这次的项目比较复杂引起的,具体原因不明。

后通过查找资料修改为使用$set来设定修改值,js如下:

this.$set(this.tableData[id],"red",true);

但是依然没有起作用,打开debugger发现tableData的值修改成功,没有渲染到页面上,查找的资料也是比较凌乱,并不能解决问题,后请教大神,才知道是数据层次太多,没有触发render函数进行自动更新,需手动调用,调用方式如下:

this.$forceUpdate();

js完整代码如下:

<script>
 export default {
  data() {
  return {
   tableData:[{id:0,name:"lili",red:false,tip:false}]
  }
  },
 
  methods: {
 clickBtn(id){
 this.$forceUpdate();
 this.$set(this.tableData[id],"red",true);
 this.$set(this.tableData[id],"tip",true); 
 }}}
</script>

以上是我解决问题的全过程,有不对的地方请指教。

这篇vue修改对象的属性值后页面不重新渲染的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript date格式化示例
Sep 25 Javascript
使用CSS3的scale实现网页整体缩放
Mar 18 Javascript
javascript动态创建链接的方法
May 13 Javascript
基于jQuery Ajax实现上传文件
Mar 24 Javascript
深入理解JavaScript中为什么string可以拥有方法
May 24 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
web页面和微信小程序页面实现瀑布流效果
Sep 26 Javascript
jQuery判断自定义属性data-val用法示例
Jan 07 jQuery
Vue.js 无限滚动列表性能优化方案
Dec 02 Javascript
js实现AI五子棋人机大战
May 28 Javascript
vantUI 获得piker选中值的自定义ID操作
Nov 04 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 #Javascript
vue2.0的虚拟DOM渲染思路分析
Aug 09 #Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
Aug 09 #Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 #jQuery
详解Vue开发微信H5微信分享签名失败问题解决方案
Aug 09 #Javascript
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 #jQuery
详解在React中跨组件分发状态的三种方法
Aug 09 #Javascript
You might like
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
javascript高亮效果的二种实现方法
2008/09/14 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
python实现抖音视频批量下载
2018/06/20 Python
python微信好友数据分析详解
2018/11/19 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
python开根号实例讲解
2020/08/30 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
高一自我鉴定
2013/12/17 职场文书
党建工作经验交流材料
2014/05/25 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
三好学生个人总结
2015/02/15 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android