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插件制作 学习过程及实例
Apr 25 Javascript
js jquery验证银行卡号信息正则学习
Jan 21 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
将查询条件的input、select清空
Jan 14 Javascript
基于OL2实现百度地图ABCD marker的效果
Oct 01 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
如何用js实现鼠标向上滚动时浮动导航
Jul 18 Javascript
浅谈Javascript中的函数、this以及原型
Oct 09 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
JS异步执行结果获取的3种解决方式
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函数,php爱好者站推荐
2007/03/19 PHP
劣质的PHP代码简化
2010/02/08 PHP
php基础学习之变量的使用
2011/06/09 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
关于this和self的使用说明
2010/08/01 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
手把手教你python实现SVM算法
2017/12/27 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
使用Python实现画一个中国地图
2019/11/23 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
2019公司管理制度
2019/04/19 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js