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 DOM 学习第二章 编辑文本
Feb 19 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
js打造数组转json函数
Jan 14 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
Nov 24 Javascript
iview实现select tree树形下拉框的示例代码
Dec 21 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 Javascript
JavaScript 生成唯一ID的几种方式
Feb 19 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的五种设计模式
2012/09/05 PHP
深入php多态的实现详解
2013/06/09 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
Python学习笔记_数据排序方法
2014/05/22 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
百思买美国官网:Best Buy
2016/07/28 全球购物
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
自考生自我鉴定范文
2013/10/01 职场文书
应届生保险求职信
2013/11/11 职场文书
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
学校后勤岗位职责
2014/02/19 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
教师求职自荐书
2014/06/14 职场文书
大学专科求职信
2014/07/02 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
nginx容器方式反向代理实战
2022/04/18 Servers