vue中的set

Vue.set()在methods中也可以写成this.$set()

<template>

    <div id="app2">

        <p v-for="city in citys" :key="city.cod">{{city.name}}</p>

        <button class="btn" @click="handClick()">更改数据</button>   

    </div>

</template>

<script>

export default {

    data() {

        return {

            citys: [

                { name: "Beijing", cod: "1" },

                { name: "Shanghai", cod: "2" },

                { name: "Guangzhou", cod: "3" }

            ]

        };

    },

    mounted(){

        this.citys[0]={name:"Shenzhen",cod:"4"};  //此时对象的值更改了,但是视图没有更新

        this.$set(this.citys,0,{name:"Shenzhen",cod:"4"}); //$set可以触发更新视图

    },

    methods: {

        // 调用方法:Vue.set( target, key, value )

        // target:要更改的数据源(可以是对象或者数组)

        // key:要更改的具体数据

        // value :重新赋的值

        handClick() {

            //Vue methods中的this 指向的是Vue的实例,这里可以直接在this中找到citys

            this.$set(this.citys, 0, { name: "更改one的值", cod: "0" });

            //上面的代码相当于:this.citys[0] = { name: "更改one的值", cod: "0" }

        },

    }

};

</script>

这个组件最后显示的界面如下:


14376033-456c389043a2c3e3.png

当点击按钮之后,就会将第一个数据进行替换,如下图所示:


14376033-8710534991924d46.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。