目录:

开篇

今天在写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不发生变化的问题的更多相关文章

  1. vue修改数组元素方法

    示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...

  2. vue中修改数组,dom未更新的问题

    vue中我们会频繁操作各种数据,但有时候发现修改完数据以后,dom并未更新? 比如有一个数组对象: obj = [{'name': 'joy'},{'name': 'bowen'}] 我要循坏插入某个 ...

  3. vue修改对象属性值视图上没有更新

    data(){ return { obj:{ name:' ' } } } 方法一: this.$set(this.obj, 'name', '新的值'); 方法二; Vue.set(vm.obj, ...

  4. js循环修改数组属性key值

    var keyMap = { deviceUid: "id", deviceType: "typeName", deviceCode: "code&q ...

  5. Vue 更改数组中的值,页面不刷新问题。解决方法+原理说明

    一.Vue 更改数组中的值,页面不刷新问题 data{ hobby:["打游戏","想静静","发呆"] } 1.错误写法(页面不刷新): ...

  6. Vue 改变数组中对象的属性不重新渲染View的解决方案

    Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...

  7. Vue 修改对象(数组)没有立即生效

    在写项目时遇到了给数组赋值后,出现赋值延时的问题,解决办法如下 // Vue 不能检测以下变动的数组: // 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = ne ...

  8. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  9. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题

    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题:https://blog.csdn.net/jerrica/article/d ...

  10. Vue方法中修改数组某一项元素而不能响应式更新

    <template> <div> <ul> <li v-for="(item, i) in ms" :key="i"& ...

随机推荐

  1. Linux下修改文件所属用户和组

    chgrp  用户名    文件名  -R chown 用户名   文件名  -R -R表示递归目录下所有文件 以上部分已验证 一.修改文件所属组群--chgrp    修改文件所属组群很简单-chg ...

  2. NJU ICS2024 PA 作业心得(三)

    NJU ICS2024 PA 作业心得(三) 需要参考的内容 RISC-V ABIs Specification:是一组规则和规范,定义了在 RISC-V 架构上编写和链接程序的方式.它确保了不同语言 ...

  3. 龙哥量化:MACD指标的金叉死叉,这样使用更准确(图解)

    如果您需要代写技术指标公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 本文的策略过于简单,你可以加一些更复杂的限制条件 1.水上金叉,可看涨; 2.水上死叉,是洗盘; ...

  4. 11.14javaweb学习

  5. WW中文地名标注:输出*.wwp和*.wpl文件

    链接1:WW中文地名标注工具----3月4日更新增加OZI航点航迹读入 链接2:中文地标库终结者---------WW中的地名/地标中文化(含40万条中文地名)3月4日更新 链接3:地图浏览器

  6. 阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路

    本文由阿里闲鱼技术团队今朝.有攸分享,本次有修订. 1.引言 闲鱼即时消息系统历经数代迭代,目前已能稳定的支撑亿级消息体量. 在此消息系统的建设过程中,我们经历了从简单到复杂.从困扰到破局,每一次的技 ...

  7. 2022 年数据科学研究综述:重点介绍 ML、DL、NLP 等

    2022 年数据科学研究综述:重点介绍 ML.DL.NLP 等 当我们在 2022 年底临近时,我对许多著名研究小组完成的所有惊人工作感到振奋,他们将 AI.机器学习.深度学习和 NLP 的状态扩展到 ...

  8. Diary -「NOI 2022」尘降

      又一次,以这样一种身份来到国赛赛场.起跑线延长出赛场外,我将于此开始又一场已知"无用"的竞技. 虚无中 我的尘埃盲目漂泊摇晃   时间回到数个月前的省选,\(600\) 分的总 ...

  9. w3cschool-Spring Security

    https://www.w3cschool.cn/springsecurity/na1k1ihx.html Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤 ...

  10. Golang-语言简介1

    http://c.biancheng.net/golang/intro/ Go语言的特性 Go语言也称为 Golang,是由 Google 公司开发的一种静态强类型.编译型.并发型.并具有垃圾回收功能 ...