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 maxlength使用说明
Sep 09 Javascript
js图片自动切换效果处理代码
May 07 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
js实现兼容IE、Firefox的图片缩放代码
Dec 08 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
Feb 24 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 Javascript
详解Vue Cli浏览器兼容性实践
Jun 08 Javascript
javascript实现贪吃蛇小练习
Jul 05 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
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
php4的session功能评述(三)
2006/10/09 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
Python生成不重复随机值的方法
2015/05/11 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
详解用python生成随机数的几种方法
2019/08/04 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
七年级英语教学反思
2014/01/15 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
高中数学教学反思
2014/01/30 职场文书
创先争优活动方案
2014/02/12 职场文书
采购求职信
2014/03/17 职场文书
设计专业自荐信
2014/06/19 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python