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 相关文章推荐
jquery中获取元素的几种方式小结
Jul 05 Javascript
jquery ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
javascript模拟map输出与去除重复项的方法
Feb 09 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 Javascript
Bootstrap安装环境配置教程分享
May 27 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
原生JS封装animate运动框架的实例
Oct 12 Javascript
Vue2.0子同级组件之间数据交互方法
Feb 28 Javascript
vue中mint-ui的使用方法
Apr 04 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 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获取新浪微博数据API实例
2013/11/12 PHP
重新认识php array_merge函数
2014/08/31 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python读取oracle函数返回值
2016/07/18 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
python dict乱码如何解决
2020/06/07 Python
python怎么提高计算速度
2020/06/11 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
通过实例解析python and和or使用方法
2020/11/14 Python
python 实现简易的记事本
2020/11/30 Python
动物学专业毕业生求职信
2013/10/11 职场文书
中英文自我评价语句
2013/12/20 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
小学生表扬稿范文
2015/05/05 职场文书
校园广播站开场白
2015/06/01 职场文书
新闻稿件写作技巧
2015/07/18 职场文书