3-VUE -set

语法 :Vue.set( target, key, value )

  • 参数

    • {Object | Array} target
    • {string | number} key
    • {any} value
  • 返回值:设置的值。

  • 用法

    向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hi')

简单来说,vue.set的作用就是在构造器外部操作构造器内部的数据、属性和方法。

外部数据:不在vue构造器里的data出生命,而是在构造器外部声明的数据,然后再data处可以引用。

外部数据的加入让程序更加灵活,我们可以在外部获取任何想要的数据形式,然后让data引用。

引入外部数据的例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue-set实例</title>
    <script type="text/javascript" src="../assets/js/vue.js" ></script>
</head>
<body>
    <h1>VUE-set 全局操作</h1>

    <div id='ele'>  
       <p v-text="count"></p>
        <ul>
            <li v-for="item in arr" v-text='item'></li>
        </ul>
    </div >
        <p>
            <button onclick="Add()">add</button>
        </p>
    <script>

        function Add(){
            //Vue.set(outData,'count',2);
            //app.count++;
            //outData.count++;
            ele.arr[1]='ddd';
            Vue.set(ele.arr,1,"arr");
        }

        //在构造器外部声明数据
        var outData={
            count:1,
            goods:"car",
            arr:['aaa','bbb','ccc'],
        }

        var ele=new Vue({
            el:'#ele',
            //引用外部数据
            data:outData
        })
        
    </script>

</body>
</html>

在外部改变数据的三种方法:

  • vue.set改变
  • 用vue对象的方法添加
  • 直接操作外部数据
<script>
        function Add(){
            Vue.set(outData,'count',2);//使用vue.set改变
            ele.count++;//使用vue对象改变
            outData.count++;//直接操作外部数据
       }

        var outData={
            count:1,
            goods:"car",
            arr:['aaa','bbb','ccc'],
        }

        var ele=new Vue({
            el:'#ele',
            data:outData
        })  
 </script>

引入vue.set的原因:

由于javascript的限制,vue不能自动检测以下变动的数组:

  • 当你利用索引直接设置一个项时,vue不会为我们自动更新
  • 当你修改数组的长度时,vue不会为我们自动更新
<body>
    <h1>VUE-set 全局操作</h1>

    <div id='ele'>  
       <p v-text="count"></p>
        <ul>
            <li v-for="item in arr" v-text='item'></li>
        </ul>
    </div >
        <p>
            <button onclick="Alert()">Alert</button>
        </p>
    <script>

        function Alert(){
            //ele.arr[1]='ddd';//该设置对于页面是没有刷新效果的
          Vue.set(ele.arr,1,"arr");
        }

        var outData={
            count:1,
            goods:"car",
            arr:['aaa','bbb','ccc'],
        }

        var ele=new Vue({
            el:'#ele',
            data:outData
        })
        
    </script>

</body>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值