Vue之監(jiān)聽(tīng)數(shù)據(jù)的原理詳解

<body>
<div id="root">
<h1>學(xué)生的基本信息</h1>
<button @click="student.age++">年齡+1歲</button>
<button @click="addSex">添加性別屬性默認(rèn)值是男</button><br>
<button @click="student.sex='未知' ">修改屬性值</button><br>
<button @click="addFriend">在列表的首位就添加一個(gè)朋友</button><br>
<button @click="updateFriend">更新第一個(gè)人的名字</button><br>
<button @click="addHobby">添加一個(gè)愛(ài)好</button><br>
<button @click="change">修改第一個(gè)愛(ài)好為爬山</button><br>
<button @click="removeSmoke">過(guò)濾掉抽煙</button><br>
<h3>姓名:{{student.name}}</h3>
<h3>年齡:{{student.age}}</h3>
<h3 v-if="student.sex">性別:{{student.sex}}</h3>
<h3>愛(ài)好:</h3>
<hr>
<ul>
<li v-for="(h,index) in student.hobby" :key="index">{{h}}</li>
</ul>
<hr>
<h3>朋友們:</h3>
<ul>
<li v-for="(f,index) in student.friends" :key="index">{{f.name}}--{{f.age}}</li>
</ul>
</div>
<script>
Vue.config.productionTip = false;
const vm = new Vue({
el: "#root ",
data: {
student: {
name: 'zhang',
age: 18,
hobby: ['喝酒', '抽煙', '燙頭'],
friends: [{
name: 'li',
age: 15
}, {
name: 'wang',
age: 10
}]
}
},
methods: {
addSex() {
this.$set(this.student, 'sex', '男')
// Vue.set(vm.student, 'sex', '男')
},
addFriend() {
this.student.friends.unshift({
name: 'YY',
age: 66
})
},
updateFriend() {
this.student.friends[0].name = "小劉";
this.student.friends[0].age = 22
},
addHobby() {
this.student.hobby.push('唱歌')
},
change() {
//splice添加表示從第0個(gè)開(kāi)始,刪除一個(gè),新增加的值是爬山
//注意:不能直接通過(guò)數(shù)組下標(biāo)的形式進(jìn)行修改
//this.student.hobby.splice(0, 1, '爬山')
//Vue.set(this.student.hobby, 0, '爬山')
this.$set(this.student.hobby, 0, '爬山')
},
removeSmoke() {
//filter不影響原數(shù)組的改變
this.student.hobby = this.student.hobby.filter((h) => {
return h !== '抽煙'
})
}
}
})
</script>
</body>
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
如何使用Vue3+elementPlus的Tree組件實(shí)現(xiàn)一個(gè)拖拽文件夾管理
最近在做一個(gè)文件夾管理的功能,要實(shí)現(xiàn)一個(gè)樹(shù)狀的拖拽文件夾面板,里面包含兩種元素,文件夾以及文件,這篇文章主要介紹了使用Vue3+elementPlus的Tree組件實(shí)現(xiàn)一個(gè)拖拽文件夾管理?,需要的朋友可以參考下2023-09-09
vue2結(jié)合echarts實(shí)現(xiàn)一個(gè)地圖的效果
這篇文章主要介紹了vue2結(jié)合echarts實(shí)現(xiàn)一個(gè)地圖的效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家何用vue和echarts實(shí)現(xiàn)一個(gè)地圖有一定的幫助,感興趣的朋友一起看看吧2024-03-03
vue init webpack myproject構(gòu)建項(xiàng)目 ip不能訪問(wèn)的解決方法
下面小編就為大家分享一篇vue init webpack myproject構(gòu)建項(xiàng)目 ip不能訪問(wèn)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
vue項(xiàng)目中常見(jiàn)問(wèn)題及解決方案(推薦)
這篇文章主要介紹了vue項(xiàng)目中常見(jiàn)問(wèn)題及解決方案,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Ant Design編寫(xiě)登錄和注冊(cè)頁(yè)面的教程
這篇文章主要介紹了Ant Design編寫(xiě)登錄和注冊(cè)頁(yè)面的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的全過(guò)程
nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,因此常用來(lái)做靜態(tài)資源服務(wù)器和后端的反向代理服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-03-03
vue項(xiàng)目實(shí)現(xiàn)面包屑導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目實(shí)現(xiàn)面包屑導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
詳解使用webpack打包編寫(xiě)一個(gè)vue-toast插件
本篇文章主要介紹了詳解使用webpack打包編寫(xiě)一個(gè)vue插件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11

