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 相关文章推荐
Select标签下拉列表二级联动级联实例代码
Feb 07 Javascript
jQuery设置与获取HTML,文本和值的简单实例
Feb 26 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
May 01 Javascript
javascript数组遍历for与for in区别详解
Dec 04 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
Angularjs 事件指令详细整理
Jul 27 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
element-ui 限制日期选择的方法(datepicker)
May 16 Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
vue通过cookie获取用户登录信息的思路详解
Oct 30 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 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)
2013/06/21 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
解读Python中degrees()方法的使用
2015/05/18 Python
python机器学习之神经网络(三)
2017/12/20 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
Python itertools.product方法代码实例
2020/03/27 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
2014学雷锋活动总结
2014/03/09 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
长城的导游词
2015/01/30 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
从事会计工作年限证明
2015/06/23 职场文书
校园之声广播稿
2015/08/18 职场文书
cypress测试本地web应用
2022/06/01 Javascript