Vue數據的監聽

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
{{name}}
    {{hobby}}
    {{xuge_obj}}
    <button @click="my_click">點擊改變數據</button>
</div>
<script>
    const app = new Vue({
        el:"#app",
        data:{
            name:"旭哥",
            hobby:["q","w","e"],
            xuge_obj:{
                obj1:"12",
                obj2:"33"
            }
        },
        methods:{
            my_click:function () {
                //this.name = "xx"
                // this.hobby.push("")
                this.hobby[0] = "狼嚎"
                console.log(this.hobby)
            }
        },
        watch:{
            name:{
                handler:function (val,oldval) {
                    console.log(val),
                    console.log(oldval)
                }
            },
            //push改變數據的長度的時候,能夠監聽到數據改變 新舊值是同樣的
            hobby:{
                handler:function (val,oldval) {
                    console.log(val),
                    console.log(oldval)
                },
                //deep爲深度監聽,深度監聽也監聽不到
                deep:true
            }
        }
    })
</script>
</body>
</html>

 

 

這個時候   this.hobby[0] = "狼嚎"  沒法被監聽到,須要將   this.name = "xx"打開,html

由於這樣就更改了數值,會從新渲染頁面,this.hobby[0] = "狼嚎"便會被監聽到而且渲染到頁面vue

 

或者將this.hobby[0] = "狼嚎"  更改成   app.$set(this.hobby,0,"狼嚎")也會點擊後修改npm

 

 

在數據監聽中數組有不少的坑數組

相關文章
相關標籤/搜索