全局API之Vue.set 监听数据层的数据变化

本文介绍了Vue.js的响应式系统,通过Vue.set方法实现对数据对象和数组的监听与更新。示例展示了如何在数组末尾添加元素并实时显示,以及如何修改对象属性并实时更新视图。内容涵盖了Vue.set的使用格式和应用场景。
摘要由CSDN通过智能技术生成

全局API之Vue.set 监听数据层的数据变化

Vue.set` Vue的核心具有一套响应式系统,简单来说就是通过监听器监听数据层的数据变化,当数据改变后,通知视图也自动更新。

Vue.set用于向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。

如果数据源是数组

第一个参数是数组,第二个是索引,第三个是索引对应的值

格式:this.$set(target,index,value)

格式1:this.$set(this.数组名,索引,值)

格式2:this.$set(this.数组名.push("添加的值"))

例题练习

要求:点击一下添加按钮,就会在数组最后一位的基础上加1,添加到数组里,并实时显示到页面上

<!--点击一下添加按钮,就会在数组最后一位的基础上加1,添加到数组里,并实时显示到页面上-->
<body>
    <div id="app"> 
        <button @click="adds">添加</button> 
        <button @click="update">修改</button>
        <p v-for="value in itme"> {{value}}</p> 
    </div>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                num:2,
                itme:[1,2]
            },
            methods:{
              adds(){
                  this.num++
                  this.$set(this.itme.push(this.num))
              },
              update(){
 //把数组itme下标为0的值修改成了"数组下标为0的变成了我!"
      this.$set(this.itme,0,"数组下标为0的变成了我!")
              }
            }
        })
    </script>
</body>

如果数据源是对象

第一个参数是对象,第二个是属性名,第三个是属性对应的值

格式:Vue.set(target,"key",value)

格式1:Vue.set(vm.对象名,"对象属性",对象值)

格式2:this.$set(this.对象名,"对象属性",对象值)

例题练习

要求:点击一下修改按钮,就会更改对象里的数据,并实时显示到页面上

<!--点击一下修改按钮,就会更改对象里的数据,并实时显示到页面上-->
<body>
    <div id="app"> 
        <button @click="update">修改</button>
        <table border="1">
            <tr>
                <th>姓名</th>
                <th>性别</th>
                <th>年龄</th>
            </tr>
            <tr>
                <td>{{stundent.name}}</td>
                <td>{{stundent.sex}}</td>
                <td>{{stundent.age}}</td>
            </tr>
        </table>
    </div>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                stundent:{
                name:"张三",
                 sex:"女",
                 age:18
               }
            },
            methods:{
              update(){
                  //使用this一定要加上$符号
                 this.$set(this.stundent,"name","李四")
                 //Vue不用加$符号,vm就是本题的vue对象
                 Vue.set(vm.stundent,"sex","男")
                 Vue.set(this.stundent,"age",30)
              }
            }
        })
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值