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 相关文章推荐
一些技巧性实用js代码小结
Oct 14 Javascript
node.js中的querystring.unescape方法使用说明
Dec 10 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 Javascript
JS实现加载时锁定HTML页面元素的方法
Jun 24 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
vue-cli构建项目下使用微信分享功能
May 28 Javascript
vue项目打包后怎样优雅的解决跨域
May 26 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 Javascript
quickjs 封装 JavaScript 沙箱详情
Nov 02 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日期控制类实例
2014/12/09 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
vue 中固定导航栏的实例代码
2019/11/01 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
.NET remoting中对象激活的两种方式
2015/06/08 面试题
师德师风承诺书
2014/05/23 职场文书
投标授权委托书范文
2014/08/02 职场文书
2015年幼师工作总结
2015/04/28 职场文书
毕业赠语大全
2015/06/23 职场文书
军训阅兵新闻稿
2015/07/17 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
Pytest之测试命名规则的使用
2021/04/16 Python
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL