VUE框架如何对数组中的元素进行响应式处理------VUE框架

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="app">
        <h1>{{msg}}</h1>
        <!-- 所谓响应式就是我们VUE的核心机制,通过我们改变data中的数据 -->
        <!-- 自动为我们修改dom元素上的内容,我们借此可以减少对dom的操作 -->
        <!-- 达到专注业务部分的目的 -->
        <!-- 想给数组下表对象添加响应式写法 -->
        <!-- vm.set(vm.vips,index位置,添加的对象) -->
        <!-- push,pop,shift,unshift,splice,reverse,sort这几个方法都会以响应式的形式操作数组 -->
        <!-- filter不行,因为它会产生一个新的数组,老数组压根没变 -->
        <!-- 在VUE中,调用以上七个API可以实现对数组的元素进行响应式处理 -->
        <h1>{{a.b.c.d}}</h1>
        <h1>{{a.email}}</h1>
        <h1>{{a.email1}}</h1>
        <h1>{{a.email2}}</h1>
        <ul>
            <li v-for="arr,index in array" :key="index">{{arr}}</li>
        </ul>
        <ul>
            <li v-for="vip,index in vips" :key="vip.id">{{vip.id}}:{{vip.name}}</li>
        </ul>
    </div>
    <script>
        // 通过数组下标中的元素,默认情况下是没有添加响应式处理的
        const vm = new Vue({
            el : "#app",
            data : {
                msg : "Hello",
                // 由此可知,VUE会给data中的所有属性,包括属性的属性做数据劫持
                // 方便我们实现数据更新时刷新dom树
                // 这种根下的东西,只能在定义的时候写或者添加东西,后期不能添加
                // 想添加,只能在声明好的属性下添加
                a : {
                    b : {
                        c : {
                            d : 1
                        }
                    }
                },
                // 数组本体是有响应式处理的
                // 通过我们修改下标的方式去修改
                // 内存中的已经变化了,但实际的dom树上没有变化
                array : [
                    "awe","b","c","d","e","f"
                ],
                // 数组中的每一个元素的属性是有响应式处理的
                vips : [
                    {id : "111", name : "Jack"},
                    {id : "112", name : "Rose"}
                ]
                // 通过数组下表修改数组中的元素,默认情况下,是没有添加响应式处理的
            }
        });
        // 不能给VM追加响应式的属性,也不能给data追加响应式的属性
        // Vue.set(vm,'x','1');
        // 后期给VUE动态追加的一些属性会添加响应式处理吗? 
        // 答不会,后期添加的属性不是在data中定义的,vue给对象添加响应式处理
        // 是通过遍历循环data来实现的,因此,后期添加的属性不在data里面,无法添加响应式处理
        vm.$data.a.email2 = "1212asd2";
        // 使用Vue.set方法赋值
        // Vue.set方法可以直接将我们这个添加的属性添加到我们的data里面
        // 因此,如果我们想给后期追加的属性添加响应式处理的话
        // 让他们变成动态资源而不是静态的
        // 我们可以采用Vue.set()方法或者vm.$set()方法来实现
        // 这两种方式都是可以添加响应式的
        Vue.set(vm.a,'email',"1212affs12");
        vm.$set(vm.a,'email1',"121acz312");
    </script>
    
</body>
</html>

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script src="../js/vue.js"></script>

</head>

<body>

    <div id="app">

        <h1>{{msg}}</h1>

        <!-- 所谓响应式就是我们VUE的核心机制,通过我们改变data中的数据 -->

        <!-- 自动为我们修改dom元素上的内容,我们借此可以减少对dom的操作 -->

        <!-- 达到专注业务部分的目的 -->

        <!-- 想给数组下表对象添加响应式写法 -->

        <!-- vm.set(vm.vips,index位置,添加的对象) -->

        <!-- push,pop,shift,unshift,splice,reverse,sort这几个方法都会以响应式的形式操作数组 -->

        <!-- filter不行,因为它会产生一个新的数组,老数组压根没变 -->

        <!-- 在VUE中,调用以上七个API可以实现对数组的元素进行响应式处理 -->

        <h1>{{a.b.c.d}}</h1>

        <h1>{{a.email}}</h1>

        <h1>{{a.email1}}</h1>

        <h1>{{a.email2}}</h1>

        <ul>

            <li v-for="arr,index in array" :key="index">{{arr}}</li>

        </ul>

        <ul>

            <li v-for="vip,index in vips" :key="vip.id">{{vip.id}}:{{vip.name}}</li>

        </ul>

    </div>

    <script>

        // 通过数组下标中的元素,默认情况下是没有添加响应式处理的

        const vm = new Vue({

            el : "#app",

            data : {

                msg : "Hello",

                // 由此可知,VUE会给data中的所有属性,包括属性的属性做数据劫持

                // 方便我们实现数据更新时刷新dom树

                // 这种根下的东西,只能在定义的时候写或者添加东西,后期不能添加

                // 想添加,只能在声明好的属性下添加

                a : {

                    b : {

                        c : {

                            d : 1

                        }

                    }

                },

                // 数组本体是有响应式处理的

                // 通过我们修改下标的方式去修改

                // 内存中的已经变化了,但实际的dom树上没有变化

                array : [

                    "awe","b","c","d","e","f"

                ],

                // 数组中的每一个元素的属性是有响应式处理的

                vips : [

                    {id : "111", name : "Jack"},

                    {id : "112", name : "Rose"}

                ]

                // 通过数组下表修改数组中的元素,默认情况下,是没有添加响应式处理的

            }

        });

        // 不能给VM追加响应式的属性,也不能给data追加响应式的属性

        // Vue.set(vm,'x','1');

        // 后期给VUE动态追加的一些属性会添加响应式处理吗?

        // 答不会,后期添加的属性不是在data中定义的,vue给对象添加响应式处理

        // 是通过遍历循环data来实现的,因此,后期添加的属性不在data里面,无法添加响应式处理

        vm.$data.a.email2 = "1212asd2";

        // 使用Vue.set方法赋值

        // Vue.set方法可以直接将我们这个添加的属性添加到我们的data里面

        // 因此,如果我们想给后期追加的属性添加响应式处理的话

        // 让他们变成动态资源而不是静态的

        // 我们可以采用Vue.set()方法或者vm.$set()方法来实现

        // 这两种方式都是可以添加响应式的

        Vue.set(vm.a,'email',"1212affs12");

        vm.$set(vm.a,'email1',"121acz312");

    </script>

   

</body>

</html>

  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值