您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Vue如何監視數據”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Vue如何監視數據”這篇文章吧。
特點:vue會監視data中所有層級的數據,并且如果他檢測到是對象那么就會給對象里面所有的屬性配置getter和setter函數
通過setter實現監視,且要在new Vue時就傳入要監測的數據
(1).對象中后追加的屬性,Vue默認不做響應式處理(就是沒有配置getter和setter函數)
(2).如需給后添加的屬性做響應式,請使用如下API:
Vue.set(target,propertyName/index,value)
vm.$set(target,propertyName/index,value)
通過包裹數組更新元素的方法實現,本質就是做了兩件事:
(1). 調用原生對應的方法對數組進行更新。 (2). 重新解析模板,進而更新頁面。
在Vue修改數組中的某個元素一定要用如下方法:
(1). 使用這些API:push()
、pop()
、shift()
、unshift()
、splice()
、sort()
、reverse()
(2). Vue.set() 或 vm.$set()
<div id="root"> <h3>人員信息</h3> <button @click="updatep">點擊更新馬東梅的信息</button> <ul> <li v-for='p in person' :key="p.id"> {{p.name}} -- {{p.age}} -- {{p.gender}} </li> </ul> <button @click="addNew">在結尾添加一個人的信息</button> </div> <script> Vue.config.productionTip = false let vm = new Vue({ el: '#root', data: { person: [ { id: "001", name: "馬冬梅", age: 20, gender: "女" }, { id: "002", name: "夏洛特", age: 33, gender: "男" }, { id: "003", name: "沈騰", age: 50, gender: "男" }, { id: "004", name: "賈玲", age: 45, gender: "女" }, ] }, methods: { updatep() { // 但是下面方法不奏效,此方法Vue檢測不到, // 原因是因為數組上面沒有getter和setter方法所以檢測不到數據發生改變 // this.person[0] = {id:"001",name:"李煥英",age:66,gender:"女"} // 下面方法奏效,是因為屬性上面已經配置了getter和setter方法 // this.person[0].name = "李煥英" // this.person[0].age = "66" // this.person[0].gender = "女" // this.person.splice(0, 1, { id: "001", name: "李煥英", age: 66, gender: "女" }) this.$set(this.person, 0, { id: "001", name: "李煥英", age: 66, gender: "女" }) }, addNew() { this.person.push({id: "005", name: "老妹啊", age: 99, gender: "女"}) } }, }) </script>
<div id="root"> <h3>學生信息</h3> <p>姓名:{{student.name}}</p> <!-- 一個很重要的點:如果是查找對象中不存在的屬性,返回的是一個undefined 不管v-show或者是v-if,如果等到undefined的就不顯示 --> <p v-show="student.sex">性別:{{student.sex}}</p> <p>年齡:{{student.age}}</p> <p>地址:{{student.address}}</p> <p>聯系方式:{{student.contact}}</p> 朋友:<p v-for="(v,index) in student.friends" :key="index">{{v.name}} -- {{v.age}}</p> <button @click="add">點擊添加性別</button> </div> <script> Vue.config.productionTip = false let vm = new Vue({ el: '#root', data: { student: { name: "Jack", age: 18, address: "北京", contact: "13xxxxxxx56", friends: [ { name: 'Mark', age: 12 }, { name: 'Lisa', age: 52 }, { name: 'Guli', age: 25 }, ] } }, methods: { add() { 兩種寫法都可以 // this.$set(vm.student,"sex","男") Vue.set(this.student,"sex","男") } }, }) </script>
以上是“Vue如何監視數據”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。