zoukankan      html  css  js  c++  java
  • vue中,怎么给data对象添加新的属性?(尼玛这面试题居然让我给碰上了。。。。)

    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>
    <style></style>
    

    点击button会发现, obj.b 已经成功添加,但是视图并未刷新:

     
    原因在于在Vue实例创建时, obj.b 并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新,这时就需要使用Vue的全局api—— $set():
    addObjB () {    
    // this.obj.b = 'obj.b'      
    this.$set(this.obj, 'b', 'obj.b')
          console.log(this.obj)
        }
    

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

     
  • 相关阅读:
    4.9新随笔
    4.2上机作业
    3.30作业
    3.26上机练习
    作业十
    作业九
    作业八
    作业六
    作业五
    作业三
  • 原文地址:https://www.cnblogs.com/fxwoniu/p/11645980.html
Copyright © 2011-2022 走看看