首页 > 其他分享 >Vue 中给 data 中的对象属性添加一个新的属性时会发生什么?如何解决?

Vue 中给 data 中的对象属性添加一个新的属性时会发生什么?如何解决?

时间:2024-03-22 16:02:15浏览次数:21  
标签:set obj 添加 视图 Vue data 属性

<template> 
   <div>
      <ul>
         <li v-for="value in obj" :key="value"> {{value}} </li> 
      </ul> 
      <button @click="addObjB">添加 obj.b</button> 
   </div>
</template>

<script>
    export default { 
       data () { 
          return { 
              obj: { 
                  a: 'obj.a' 
              } 
          } 
       },
       methods: { 
          addObjB () { 
              this.obj.b = 'obj.b' 
              console.log(this.obj) 
          } 
      }
   }
</script>

点击 button 会发现,obj.b 已经成功添加,但是视图并未刷新。这是因为在Vue实例创建时,obj.b并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新,这时就需要使用Vue的全局 api $set():

addObjB () (
   this.$set(this.obj, 'b', 'obj.b')
   console.log(this.obj)
}

$set()方法相当于手动的去把obj.b处理成一个响应式的属性,此时视图也会跟着改变了。

标签:set,obj,添加,视图,Vue,data,属性
From: https://blog.csdn.net/Miller777_/article/details/136943871

相关文章

  • Vue中会出现哪些跨域问题?如何解决
    跨域跨域指的是在网络通信中,由于安全策略的限制,浏览器的一个文档或者脚本试图去请求另一个源(域名、协议或端口)下的资源时,会受到限制或阻止。这种情况通常发生在网页上的JavaScript发起跨域请求时。跨域请求可能会导致安全漏洞,因此浏览器通常会执行同源策略(Same-OriginPolicy),阻......
  • Datalab
    布尔运算的本质就是集合明白这一点便可以很快做出第一题intbitXor(intx,inty){return(~(x&y))&(~(~x&~y));}根据补码定义inttmin(void){return(1<<31);}当一个数为最小整数时加一等于其反码intisTmax(intx){return!((~x^(x+1))|!(x+1));......
  • ruoyi-nbcio-plus基于vue3的flowable增加开始节点的表单绑定修改
    更多ruoyi-nbcio功能请看演示系统gitee源代码地址前后端代码:https://gitee.com/nbacheng/ruoyi-nbcio演示地址:RuoYi-Nbcio后台管理系统http://122.227.135.243:9666/更多nbcio-boot功能请看演示系统 gitee源代码地址后端代码:https://gitee.com/nbacheng/nbcio-boot......
  • vue3 + ts +element-plus + vue-router + scss + axios搭建项目
    本地环境:node版本:20.10.0目录一、搭建环境二、创建项目三、修改页面四、封装路由vue-router五、element-plus六、安装scss七、封装axios一、搭建环境1、安装vue脚手架npmi-g@vue/cli2、查看脚手架版本vue-V3、切换路径到需要创建项目的地方二、创建......
  • 基于springboot+vue的乡村民宿管理系统
    一、系统架构        前端:vue|element-ui        后端:springboot|mybatis-plus        环境:jdk1.8+|mysql|maven|nodejs二、代码及数据库        三、功能介绍   01.登录页  02.注册 03.管理员-首页 ......
  • QT 智能指针 QPointer QScopedPointer QSharedPointer QWeakPointer QSharedDataPoint
    QPointerQPointer是一种受保护的指针,当其引用的对象被销毁时,它会被自动清除(但是,销毁引用对象还是必须手动delete)。QPointer所指向的对象必须是QObject或其派生类对象。当多个指针指向同一个Object对象时,引用的对象可能被释放掉,这时使用QPointer就可以安全的测试引用对象是......
  • jeecgBoot-vue3记录各个位置
    侧边栏顶部logo处(包含logo和title)src/conmponents/Application/srv/AppLogo.vue侧边栏(有无下级)src/compoents/SimpleMenu/src/SimpleSubMenu侧边栏(可设置背景图片)src/layoits/default/sider/LayoutSider侧边栏src/layouts/default/index.vue头部欢迎语是......
  • Rust 的 PhantomData
    在Rust中,PhantomData是一个零大小的标记类型,用于表示泛型参数的某种“幽灵”所有权或依赖性,而不实际持有该类型的数据。它在标准库中的std::marker模块下提供。使用PhantomData的主要场景有:占位以满足泛型约束:有时我们定义了一个泛型结构体,但是并没有直接使用到该......
  • DataGrip 汉化、IDEA 汉化 、Rider 汉化
    关于汉化效果图打开IDE 点击file下的Settings找到插件  点击OK   不管是IDEA还是DataGrip以及Rider都一样的操作。 ......
  • Vue学习笔记56--vue常用Ajax库(axios)
    vue常用Ajax库:1.vue-resource插件库npmivue-resource使用方式略,不建议使用,vue1.x使用广泛,官方已不维护2.axios通用的Ajax请求库,官方推荐,使用广泛axios在Vue项目中可以用来向后台发送请求(调接口API),获取响应信息的一个方法。Axios 是一个基于 promise 的 HTTP 库,可以......