广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue如何修改data中的obj数据的属性
  • 171
分享到

vue如何修改data中的obj数据的属性

vuedata属性vue修改datavue修改data中obj属性 2022-11-13 14:11:43 171人浏览 泡泡鱼
摘要

目录修改data中的obj数据的属性修改data以实现数据响应式怎么保证你的变化我Vue能监听到?如果初始值没给这个变量Vue还能监听吗?修改data中的obj数据的属性 //方法一

修改data中的obj数据的属性

//方法一
var obj = this.obj;
obj.name = 'long';
this.obj = obj;
//方法二
Vue.set(this.obj, "passWord", "num");
//part1,要修改的obj对象;
//part2,要添加或者修改的属性;
//part3,修改值;

修改data以实现数据响应式

Vue为了实现在数据变化时对页面重新渲染。所以在初始化时对传进来来的数据对象进行监听。

怎么保证你的变化我Vue能监听到?

监听的操作就是:对数据对象的每一个数据,内部内部声明一个变量,存储这个传进来的初始值,然后开始了代理模式。后续对这个数据的读取和修改,实际都是对这个内部变量的getter和setter。由此所有的修改都会经过setter,那么只需要setter的时候触发监听函数,渲染页面即可。

当你把一个普通的 javascript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。

每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据 property 记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。

那么返回给外部的,实际是一个经过篡改的,经过了代理的数据对象。

如果初始值没给这个变量Vue还能监听吗?

这里面有个新手易犯的问题是:一开始传进数据对象时忘记传这个变量或无法传这个变量。

由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。

如果后面使用了这个变量,那么后面对这个变量进行更新时页面不会变化的,因为vue根本没监听这个对象。

解决办法:

(1)一开始就传入这个变量;

(2)对于对象:使用Vue.set或vm.$ set在使用之前监听变量;

(3)对于数组,除了使用对象的Vue.set或和vm.$set 方法。尤雨溪其实对数组的如下方法进行了封装,使用这些方法的时候已经进行了set监听。

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

有一个神奇的测试题:

<div id="app">
    <span class=span-a>
      {{obj.a}} 
    </span>
    <span class=span-b>
      {{obj.b}}
    </span>
  </div>
var app = new Vue({
  el: '#app',
  data: {
    obj: {
      a: 'a',
    }
  },
})
app.obj.a = 'a2'
app.obj.b = 'b'

最终 span-a 和 span-b 中分别展示什么字符串?答案是:a2和b

原因是视图在显示 span-a 的 a2 时,顺便更新了 span-b

视图更新其实是异步的。

1、当我们让 a 从 ‘a1’ 变成 ‘a2’ 时,Vue 会监听到这个变化,但是 Vue 并不能马上更新视图,因为 Vue 是使用 Object.defineProperty 这样的方式来监听变化的,监听到变化后会创建一个视图更新任务到任务队列里。(文档有写)

2、所以在视图更新之前,要先把余下的代码运行完才行,也就是会运行 b = ‘b’。

3、等到视图更新的时候,由于 Vue 会去做 diff(文档有写),于是 Vue 就会发现 a 和 b 都变了,自然会去更新 span-a 和 span-b。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: vue如何修改data中的obj数据的属性

本文链接: https://www.lsjlt.com/news/171633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue如何修改data中的obj数据的属性
    目录修改data中的obj数据的属性修改data以实现数据响应式怎么保证你的变化我Vue能监听到?如果初始值没给这个变量Vue还能监听吗?修改data中的obj数据的属性 //方法一...
    99+
    2022-11-13
    vue data属性 vue 修改data vue修改data中obj属性
  • vue如何修改data中数据问题
    目录vue修改data中数据vue中修改简单类型数据vue中修改数组的方法vue中修改对象的方法关于删除vue修改数据不生效,页面不刷新vue中数据类型vue数据侦听简易理解数据更新...
    99+
    2022-11-13
  • vue如何重置data的所有属性
    目录重置data的所有属性1.拿到data原始属性2.拿到当前的data3.复制到当前$data里面重置当前页面的data问题一问题二重置data的所有属性 1.拿到data原始属性...
    99+
    2022-11-13
  • mysql怎么修改数据表的属性
    mysql中修改数据表属性的方法将表中的myisam属性修改为utf8属性alter table '表名' engine=myisam charset=utf8;在表中添加一个GetewayId字段,类型为int,且不能为nullalter...
    99+
    2022-10-10
  • vue中如何给data里面的变量增加属性
    目录给data里面的变量增加属性vue框架是使用mvvm模式我废话不多说直接上方法了 给data中的响应式对象动态添加属性给data里面的变量增加属性 vue框架是使用mv...
    99+
    2022-11-13
  • vue实现动态给data函数中的属性赋值
    目录vue动态给data函数中的属性赋值vue给data中的数据赋值报错问题背景分析解决方案vue动态给data函数中的属性赋值 1.首先创建一个监视器,用来监视相关的属性 2.当这...
    99+
    2022-11-13
  • 如何在PHP中修改对象数组属性的值
    一、简介在PHP中,一个对象可能包含多个属性,这些属性可以是不同的数据类型,包括字符串、数字、数组等。在开发过程中,可能需要修改某个对象的属性值。本文将介绍如何在PHP中修改对象数组属性的值。二、代码示例考虑下面这个简单的PHP类:clas...
    99+
    2023-05-14
  • jquery如何修改disabled属性的值
    本篇内容主要讲解“jquery如何修改disabled属性的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery如何修改disabled属性的值”吧! ...
    99+
    2022-10-19
  • jquery如何修改div的属性值
    这篇文章主要介绍了jquery如何修改div的属性值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jquery如何修改div的属性值文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2022-10-19
  • javascript如何修改元素的style属性
    javascript如何修改元素的style属性,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在javascript中,可以利用setAt...
    99+
    2022-10-19
  • jquery如何修改指定属性的值
    这篇文章主要讲解了“jquery如何修改指定属性的值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery如何修改指定属性的值”吧! ...
    99+
    2022-10-19
  • jquery如何修改元素的title属性
    这篇“jquery如何修改元素的title属性”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇...
    99+
    2022-10-19
  • jquery如何修改元素的transform属性
    这篇“jquery如何修改元素的transform属性”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来...
    99+
    2022-10-19
  • react如何修改对象的属性值
    这篇文章主要讲解了“react如何修改对象的属性值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react如何修改对象的属性值”吧!react修改对象属性值的方法:1、打开相应的react代...
    99+
    2023-07-04
  • 如何解决spring-data-jpa事物中修改属性自动更新update问题
    小编给大家分享一下如何解决spring-data-jpa事物中修改属性自动更新update问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题还原项目orm层用...
    99+
    2023-06-20
  • java如何修改xml属性节点的值
    在Java中,可以使用DOM解析器来修改XML属性节点的值。下面是一个示例代码:```javaimport java.io.File...
    99+
    2023-09-11
    java
  • javascript如何修改元素节点的属性
    这篇文章给大家分享的是有关javascript如何修改元素节点的属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 修改方法:1、使用setAttri...
    99+
    2022-10-19
  • jquery如何修改a标签的href属性
    使用jquery修改a标签href属性的方法:1.新建html项目,引入jquery;2.创建a标签,设置href和id属性;3.添加button按钮,绑定onclick点击事件;4.通过id获取标签对象,使用attr()方法修改href属...
    99+
    2022-10-19
  • jquery如何修改子元素的属性值
    这篇文章主要介绍了jquery如何修改子元素的属性值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jquery如何修改子元素的属性值文章都会有所收获,下面我们一起来看看吧。修改方法:1、用选择器获取指定元素对象...
    99+
    2023-07-05
  • 数据库之数据库的创建删除属性修改语句大全
    --创建数据库使用默认的方式 create database 数据库名称 --创建一个完整的数据库,带有主文件和日志文件 create database 数据库名称 --逻辑名称 on primary( name="数据库名称", ...
    99+
    2021-04-07
    数据库之数据库的创建删除属性修改语句大全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作