记vue修改数组属性,dom不发生变化的问题
目录:
开篇
今天在写vue的时候,出现了一个以前可能没遇到的问题。我利用一个数组记录列表下按钮的启用、禁用状态,但我点击某个列表项按钮后,会修改当前数组里面的状态值使其解除禁用状态,我一开始的代码写的是:
<tr :key="index" v-for="(device,index) in devices">
<td>
<button type="button" class="btn btn-success btn-sm btn-block mb10" @click="connectTsc(index, device.address)">连接</button>
<button type="button" class="btn btn-danger btn-sm btn-block mb10" :disabled="allowPrintDevices[index]" @click="disConnectTsc()">断开</button>
<button type="button" class="btn btn-primary btn-sm btn-block mb10" :disabled="allowPrintDevices[index]" @click="printText(index, device.address)">打印文字</button>
</td>
</tr>
this.allowPrintDevices[index] = false
这样是不会成功的。
正确的姿势
this.$set(this.allowPrintDevices, deviceIndex, false)
为什么
当vue中改变对象元素的情况下,不会重新渲染dom元素,这时候可以用vue的$set方法。
一般情况下就可以实现功能了,也就是改变对象元素后,会重新渲染dom,如果当你使用挺好this.$set方法是,发现并不管用,那么应该就是你改变的对象层级太深了,没有办法触发reader函数,需要自己手动触发一下、
this.$forceUpdate()
// 举例
this.$set(this.data[id],"status",true)
$set
官方:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新
参考文献:Vue-给对象新增属性(使用Vue.$set())、深入响应式原理
记vue修改数组属性,dom不发生变化的问题的更多相关文章
- vue修改数组元素方法
示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...
- vue中修改数组,dom未更新的问题
vue中我们会频繁操作各种数据,但有时候发现修改完数据以后,dom并未更新? 比如有一个数组对象: obj = [{'name': 'joy'},{'name': 'bowen'}] 我要循坏插入某个 ...
- vue修改对象属性值视图上没有更新
data(){ return { obj:{ name:' ' } } } 方法一: this.$set(this.obj, 'name', '新的值'); 方法二; Vue.set(vm.obj, ...
- js循环修改数组属性key值
var keyMap = { deviceUid: "id", deviceType: "typeName", deviceCode: "code&q ...
- Vue 更改数组中的值,页面不刷新问题。解决方法+原理说明
一.Vue 更改数组中的值,页面不刷新问题 data{ hobby:["打游戏","想静静","发呆"] } 1.错误写法(页面不刷新): ...
- Vue 改变数组中对象的属性不重新渲染View的解决方案
Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...
- Vue 修改对象(数组)没有立即生效
在写项目时遇到了给数组赋值后,出现赋值延时的问题,解决办法如下 // Vue 不能检测以下变动的数组: // 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = ne ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题
VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题:https://blog.csdn.net/jerrica/article/d ...
- Vue方法中修改数组某一项元素而不能响应式更新
<template> <div> <ul> <li v-for="(item, i) in ms" :key="i"& ...
随机推荐
- Linux系统安装python3.8与卸载教程
ln -sf /usr/local/python311/bin/python3.11 /usr/local/bin/python3ln -sf /usr/local/python311/bin/pyd ...
- SpringBoot配置文件敏感信息加密,springboot配置文件数据库密码加密jasypt
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...
- Java调用Shell问题整理
背景 java可以通过Runtime来调用其他进程,如cmd命令,shell文件或脚本等. 基本用法 Runtime执行时返回一个Process对象,利用该对象完成脚本执行.下面的例子中,Linux的 ...
- 生产环境Sentinel改造实践(二):规则管理推送改造
前文介绍了Sentinel相关的核心概念,本文开始动手对规则管理推送进行改造. 这里挑选流控规则模式改造为示例 Sentinel Dashboard 改造 在com.alibaba.csp.senti ...
- Github绝版开源加速神器fastgit下载链接
Github绝版开源加速神器fastgit下载链接: https://pan.baidu.com/s/1R-4rWuxh0_awIRaWCiGWkQ 提取码: yyrg 参考链接:发现一款稳定可靠的 ...
- .NET 9 new features-Memory Caching 和 Collections 优化
一.内存缓存(Memory Caching) 1. 具体的原理 内存缓存是一种在应用程序内存中存储数据的机制,旨在减少对外部数据源的频繁访问,从而提高应用程序的性能. 在 .NET 中,MemoryC ...
- C# HOOK 键盘事件
C# HOOK 键盘事件 /* by: wgscd date:2023-8-15 desc: test hook in c# */ using System; using System.Collect ...
- neo4j存储数据-图数据库
1. 简介 本文主要介绍neo4j是如何将图数据保存在磁盘上的,采用的是什么存储方式.分析这种存储方式对进行图查询/遍历的影响. 2. 图数据库简介 生产环境中使用的图数据库主要有2种,分别是带标签的 ...
- Linux密钥rsa加密原理和ssh使用密钥实现免密码登录
1.公私钥简介与原理 公钥和私钥都属于非对称加密算法的一个实现,这个加密算法的信息交换过程是: 1) 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥, ...
- 安装坦克PWA3教程
全文概述 本文档提供了一份详细的教程,旨在引导读者完成坦克PWA3的安装与基本配置过程.坦克PWA3是一个综合性的平台,具备多项实用功能,如快速DNS记录管理.内网穿透及安全配置等,特别适用于自托管服 ...