计算机系统应用教程网站

网站首页 > 技术文章 正文

Vue 给对象增加属性,新属性无法双向绑定问题

btikc 2024-10-12 13:25:46 技术文章 6 ℃ 0 评论

1、问题描述

在做vue 项目时,有时候需要给data中的对象(obj)添加新的属性(a),并用新的属性做页面显示或者v-if控制,但需要注意的是直接设置新属性的值(this.obj.a=1)vue不会做双向绑定,也就是说页面根本就拿不到这个属性。下面的用法是错误的,你能看出是哪里错吗?页面会输出什么呢?

<template>
  <div @click="addCount">click me {{obj.a}}</div>
</template>

<script>
export default {
  data() {
    return {
      obj: {}
    };
  },
  mounted() {
    this.obj.a = 0
  },
  methods: {
    addCount() {
      this.obj.a += 1
    },
  },
};
</script>

2、正确用法

要想新添加的属性支持vue双向绑定,我们应该使用this.$set方法来进行首次赋值。注意:这里说的是首次赋值

用法如下:

this.$set(对象, 新属性, 值)

修改之前的错误示例

<template>
  <div @click="addCount">click me {{obj.a}}</div>
</template>

<script>
export default {
  data() {
    return {
      obj: {}
    };
  },
  mounted() {
    this.$set(this.obj, "a", 0)
  },
  methods: {
    addCount() {
      this.obj.a += 1
    },
  },
};
</script>

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表