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中expression的用法整理
May 13 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
js轮播图代码分享
Jul 14 Javascript
微信和qq时间格式模板实例详解
Oct 21 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
easyui-edatagrid.js实现回车键结束编辑功能的实例
Apr 12 Javascript
vue实现未登录跳转到登录页面的方法
Jul 17 Javascript
js计算两个日期间的天数月的实例代码
Sep 20 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
Oct 31 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 Javascript
es6中reduce的基本使用方法
Sep 10 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
ADODB的数据库封包程序库
2006/12/31 PHP
深入PHP变量存储的详解
2013/06/13 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
python绘图库Matplotlib的安装
2014/07/03 Python
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
python实现数字炸弹游戏
2020/07/17 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
化学实验员岗位职责
2013/12/28 职场文书
产品质量承诺书范文
2014/03/27 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技