<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/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: ["唱歌", "跳舞", "請客吃飯"], xuge_obj: { obj1: "王鐵錘", obj2: "李剛蛋" } }, methods: { my_click: function () { // this.name = "病變" // this.hobby.push("燙頭") // this.hobby[0] = "狼嚎" // console.log(this.hobby) // 用下面這種方法改變數據裏的值 // app.$set(this.hobby, 0, "狼嚎") this.xuge_obj.obj1 = "小粉嫩" } }, watch: { name: { handler: function (val, oldVal) { console.log(val) console.log(oldVal) } }, // push改變數據的長度的時候 能夠監聽到數據改變 新舊值是是同樣的 // 不能監聽到數據裏值的改變 深度監聽也不能夠 除非用$set hobby: { handler: function (val, oldVal) { console.log(val) console.log(oldVal) }, // deep: true }, xuge_obj: { handler: function (val, oldVal) { console.log(val) console.log(oldVal) }, deep: true } } }) </script> </body> </html>
- push:html
改變數據的長度的時候 能夠監聽到數據改變, 新舊值是同樣的vue
不能監聽到數據裏面值的改變, 深度監聽也不能夠npm
- $set:app
改變數據的長度的時候, 能夠監聽到數據改變,新舊值是不一樣的,能夠監聽到數據裏的值的變化函數
- watch:ui
該屬性是在綁定 id= app的時候的實例化的Vue中的參數, 該參數對應的值是一個對象,該對象中this
包含的是須要被監聽的 data 中存在且被定義了的對象,該對象中包含的參數有: handler,deep;spa
-handler: 對應函數,該函數,是對被監聽屬性的新舊值進行操做;.net
-參數解釋:code
-val : 新值
-oldval: 舊值
- deep:是否開啓深度監聽