vue通过 this.$set(或者Vue.set) 和 Object.assign 两种方式给对象添加属性

最终效果是这样的:添加了一个age属性

 

第一种:this.$set

<template>
    <div class="hello">
      <button @click="setMessage">添加属性</button>
      {{ student.name }}
      <input type="text" v-model="student.age">
    </div>
  </template>
  
  <!-- 第一种实现方式:利用this.$set 和 Vue.set -->
  <script>
  import Vue from 'vue'
  export default {
   data() {
     return {
       student: {
         name: '张三',
       }
     }
   },
   methods: {
     setMessage() {
        // this.$set(obj, key, value)
        this.$set(this.student, 'age', 15)  
        //使用Vue.set时,必须导入vue,不然会报错
        // Vue.set(this.student, 'age', 18)
        console.log(this.student)
     }
   },
  }
  </script>
 

第二种:通过Object.assign(target, sources)方法 

<template>
    <div class="hello">
      <button @click="setMessage">添加属性</button>
      {{ student.name }}
      <input type="text" v-model="student.age">
    </div>
  </template>
  
  
  <!-- 第二种实现方式:通过Object.assign(target, sources)方法 -->
  <script>
export default {
  data() {
    return {
      student: {
        name: '张三',
      }
    }
  },
  methods: {
    setMessage() {
      this.student.age = 15
      this.student = Object.assign({}, this.student)
      console.log(this.student)
    }
  }
}
</script>

通过这两种方式为对象添加属性之后,他的对象身上多了get和set方法,所以,此时我们再次操作该属性的时候,就会引起视图的更新啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值