Vue----数据源中数组的操作

点击按钮实现数组中第一个元素改变

代码:

    <div id='app'>

        <button @click="change">改变第一个元素</button>

        <p v-for="el in arr">{{el}}</p>

    </div>

    <script>

        new Vue({

            el:'#app',

            data: {

                arr:["hello","css","js","DOM"]

            },

            methods: {

                change(){

                    // 修改第一个元素的值

                    this.arr[0]="666"

                }

            },

            computed: {}

    })

    </script>

运行代码,点击按钮会发现页面上第一个元素并没有被改变,但是数组中的元素改变了吗?

在添加一个按钮来验证

        <button @click="look">验证</button>

 methods: {

                change(){

                    // 修改第一个元素的值

                    this.arr[0]="666"

                },

                look(){

                    console.log( this.arr[0])

                }

            },

会发现其实数组中的元素是改变了的,只是页面没有刷新所以就没有渲染到页面上。这是为什么呢?因为对于对象取成员官方是做了劫持的,但是数组取下标正好官方没有做劫持。为什么不做呢?原因很简单,数组的下标是可以有无限个的,换句话说就是劫持不过来。如果把他们都劫持了性能就会很不好。

难道不能修改数组的下标吗?当然不是我们可以使用数组的方法来修改其元素

  change(){

                    // 修改第一个元素的值

                    // this.arr[0]="666"

                    this.arr.splice(0,1,"6666")

                },

或者利用数组取下标的方式修改元素后,刷新页面

       change(){

                    // 修改第一个元素的值

                    this.arr[0]="666"

                    // this.arr.splice(0,1,"6666")

                    Vue.set(this.arr,0,this.arr[0])

                },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值