vue双向绑定不生效、对象中的属性值发生改变页面不会重新渲染问题解决办法

article/2025/11/9 15:55:43

文章目录

  • vue双向绑定原理
  • 方法一 增加一个基本类型的变量
  • 方法二 使用整体对象替换
  • 方法三 使用vue文档提供的方法

vue双向绑定原理

vue深入式响应原理,当我们在data中声明变量对象,Vue 将遍历此对象所有的 property(如下面的list),并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。

<div v-for="(item,index) in list":key="index"@click="changeSingle(item,index)">{{item.name}},今年{{item.age}}岁,{{item.single}}单身</div>
data () {return {list: []//声明一个数组}},mounted () {this.setSingle()},methods: {//设置初始值setSingle () {this.list = [{ name: '小帅', age: '17' },{ name: '大漂亮', age: '16' },{ name: '阿伟', age: '18' },{ name: '金姐', age: '22' }]this.list.forEach(element => {element.single = '是'})},//点击事件 改变状态值changeSingle (item, index) {item.single = '不是'console.log('月老牵线,告别单身~')}}

当我们修改基本类型的数据时,视图上会即时更新。但是,当我们修改引用数据类型时,由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。这个限制是由于引用数据类型(数组和对象)的数据存储层级可能包含多层,当我们没有在声明引用数据类型时就声明其属性值,它不会监听深层级的属性。
此时月老都牵线了 但是小帅的状态没变 (摊手)
在这里插入图片描述

救救小帅吧~

方法一 增加一个基本类型的变量

偶然发现,在触发增删改引用数据类型的属性值,同时修改一个基本数据类型的值,并且该基本类型必须渲染在视图上,才会触发引用数据类型数据在视图上的更新。
代码如下
HTML代码:

<div v-for="(item,index) in list":key="index"@click="changeSingle(item,index)">{{item.name}},今年{{item.age}}岁,{{item.single}}单身</div><div>{{flag}}</div>

js代码:

data () {return {person: {},list: [],flag: true}},mounted () {this.setSingle()},methods: {setSingle () {this.list = [{ name: '小帅', age: '17' },{ name: '大漂亮', age: '16' },{ name: '阿伟', age: '18' },{ name: '金姐', age: '22' }]this.list.forEach(element => {element.single = '是'})},changeSingle (item, index) {this.flag = !this.flagitem.single = '不是'console.log('月老牵线,' + item.name + '告别单身~')}}
}

在这里插入图片描述

方法二 使用整体对象替换

直接给list整体赋一个值

changeSingle (item, index) {this.list = [{ name: '小帅', age: '17', single: '不是' },{ name: '大漂亮', age: '16' },{ name: '阿伟', age: '18' },{ name: '金姐', age: '22' }]console.log('月老牵线,' + item.name + '告别单身~')}

在这里插入图片描述

方法三 使用vue文档提供的方法

$forceUpdate(),在增删改数据后实行强制更新。请添加图片描述

changeSingle (item, index) {item.single = '不是'this.$forceUpdate()console.log('月老牵线,' + item.name + '告别单身~')}

好的,恭喜小帅告别单身~(✿✿ヽ(°▽°)ノ✿)


http://chatgpt.dhexx.cn/article/laPhilVT.shtml

相关文章

前端技巧|vue双向绑定原理,助你面试成功

在面试一些大厂的时候&#xff0c;面试官可能会问到你vue双向数据绑定的原理是什么&#xff1f;有些小伙伴不知道是什么东西&#xff0c;这样你在面试官的眼里就大打折扣了。今天小千就来给大家介绍一下vue的双向绑定原理&#xff0c;千万不要错过啦。 vue双向绑定 大家其实对…

vue双向绑定数组

众所周知,vue中v-model 会忽略所有表单元素的 value、checked、selected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。 大部分情况,v-model是绑定一个对象的属性,但是如果数据库中的数据是一个数组,这种情况下,如果把数组转换成对象再绑定,然后再转换回去提交…

vue双向绑定经典案例

1、无需废话&#xff0c;直接上代码 复制到新建的记事本文件&#xff0c;保存问demo.html即可。 <script src"https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <!DOCTYPE html> <html><head> <meta charset"utf…

浅谈vue双向绑定的原理

一、什么是双向绑定 我们先从单向绑定切入 单向绑定非常简单&#xff0c;就是把Model绑定到View&#xff0c;当我们用JavaScript代码更新Model时&#xff0c;View就会自动更新 双向绑定就很容易联想到了&#xff0c;在单向绑定的基础上&#xff0c;用户更新了View&#xff0…

vue双向绑定

1.vue双向绑定原理 vue.js 则是采用数据劫持结合发布者-订阅者模式的方式&#xff0c;通过Object.defineProperty()来劫持各个属性的setter&#xff0c;getter&#xff0c;在数据变动时发布消息给订阅者&#xff0c;触发相应的监听回调。我们先来看Object.defineProperty()这个…

Vue基础知识总结 6:vue双向绑定原理

&#x1f345; 作者简介&#xff1a;哪吒&#xff0c;CSDN2021博客之星亚军&#x1f3c6;、新星计划导师✌、博客专家&#x1f4aa; &#x1f345; 哪吒多年工作总结&#xff1a;Java学习路线总结&#xff0c;搬砖工逆袭Java架构师 &#x1f345; 关注公众号【哪吒编程】&#…

7、Vue双向绑定原理和实现

原理 视图&#xff08;view&#xff09;变化更新数据&#xff08;data&#xff09;。这个很简单&#xff0c;通过事件监听就可以实现数据&#xff08;data&#xff09;变化更新视图&#xff08;view&#xff09;。通过数据劫持&#xff08;即Object.defineProperty( )方法&…

vue---双向绑定

目录 1、.sync修饰符-双向绑定 2、v-model修饰符-双向绑定 3、双向绑定原理 vue 中的双向绑定是语法糖。 1、.sync修饰符-双向绑定 . vue是单向数据流的。父组件可以通过prop向子组件传递数据。子组件需要通过自定义事件来将自己的数据变更通知给父组件&#xff0c;我们可以通过…

vue实现双向绑定的方式

什么是双向绑定 我们先从单向绑定切入,单向绑定非常简单&#xff0c;就是把Model绑定到View&#xff0c;当我们用JavaScript代码更新Model时&#xff0c;View就会自动更新. 双向绑定就很容易联想到了&#xff0c;在单向绑定的基础上&#xff0c;用户更新了View&#xff0c;Mode…

vue数据双向绑定

5.Vue数据双向绑定 5.1.什么是双向数据绑定 Vue.js 是一个 MVVM 框架&#xff0c;即数据双向绑定&#xff0c;即当数据发生变化的时候&#xff0c;视图也就发生变化&#xff0c;当视图发生变化的时候&#xff0c;数据也会跟着同步变化。这也算是 Vue.js 的精髓之处了。 值得…

vue双向绑定原理

** Vue双向绑定的原理 一、在讲vue双向绑定之前我们需要来了解下MVVM模式 MVVM&#xff08;Model-View-ViewModel&#xff09;是对 MVC&#xff08;Model-View-Control&#xff09;和 MVP&#xff08;Model-View-Presenter&#xff09;的进一步改进。 View&#xff1a;视图层…

OpenCV中的图像处理 —— 傅里叶变换+模板匹配

OpenCV中的图像处理 —— 傅里叶变换模板匹配 现在也在逐渐深入啦&#xff0c;希望跟大家一起进步越来越强 目录 OpenCV中的图像处理 —— 傅里叶变换模板匹配1. 傅里叶变换1.1 Numpy实现傅里叶变换1.2 OpenCV实现傅里叶变换1.3 DFT的性能优化 2. 模板匹配2.1 单对象的模板匹配…

opencv 多角度模板匹配

总结一下实现多角度模板匹配踩的坑 一 、多角度匹配涉及到要使用mask&#xff0c;首先opencv matchTemplateMask自带的源码如下&#xff1a; static void matchTemplateMask( InputArray _img, InputArray _templ, OutputArray _result, int method, InputArray _mask ) {CV_A…

用OpenCV进行模板匹配

1. 引言 今天我们来研究一种传统图像处理领域中对象检测和跟踪不可或缺的方法——模板匹配&#xff0c;其主要目的是为了在图像上找到我们需要的图案&#xff0c;这听起来十分令人兴奋。 所以&#xff0c;事不宜迟&#xff0c;让我们直接开始吧&#xff01; 2. 概念 模板匹…

OpenCV之模板匹配

模板匹配的概念与原理 模板匹配是在一幅图像中寻找与另一幅模板图像最匹配&#xff08;相似&#xff09;部分的技术&#xff0c;在OpenCV中&#xff0c;模板匹配由函数MatchTemplate()函数实现。需要注意的是&#xff0c;模板匹配不是基于直方图的&#xff0c;而是通过在输入图…

基于OpenCV的模板匹配

模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的, 而是通过在输入图像上滑动图像块(模板)同时比对相似度, 来对模板和输入图像进行匹配的一种方法。 image: 待搜索图像(大图)templ: 搜索模板, 需和原图一样的数据类型且尺寸…

【OpenCV系列】模板匹配

原理 什么是模板匹配? 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术. 它是怎么实现的? 我们需要2幅图像: 我们的目标是检测最匹配的区域: 原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域模板 (T): 将和原图像比照的图像块 为了…

python opencv 模板匹配

模板匹配是在一个大图里搜索和找模板图像位置的方法。OpenCV有个函数cv2.matchTemplate()来做这个。它吧模板图像在输入图像上滑动&#xff0c;对比模板和在模板图像下的输入图像块。它返回了一个灰度图像&#xff0c;每个像素表示那个像素周围和模板匹配的情况。 如果输入图像…

基于OpenCV的图像匹配----模板匹配(一)

我先介绍一下模板匹配的原理 原图像&#xff1a;我们期望找到与模板图像匹配的图像 模板图像&#xff1a;将于模板图像进行比较的图像 一次移动一个像素&#xff08;从左到右&#xff0c;从上到下&#xff09;。在每个位置&#xff0c;计算相似度度量&#xff0c;以便它表示在…

OpenCV图像处理——模板匹配

总目录 图像处理总目录←点击这里 十一、模板匹配 11.1、原理 找一个图片上有的模板&#xff0c;和原图像进行模板匹配模板图像在待匹配图像上滑动&#xff0c;记录下每次滑动后的参数值&#xff08;如平方差&#xff0c;相关性&#xff09;。寻找最小值或最大值&#xff0…