最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue如何修改data中的obj數(shù)據(jù)的屬性

 更新時(shí)間:2022年08月03日 11:16:32   作者:乾復(fù)道  
這篇文章主要介紹了vue如何修改data中的obj數(shù)據(jù)的屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

修改data中的obj數(shù)據(jù)的屬性

//方法一
var obj = this.obj;
obj.name = 'long';
this.obj = obj;
//方法二
Vue.set(this.obj, "password", "num");
//part1,要修改的obj對(duì)象;
//part2,要添加或者修改的屬性;
//part3,修改值;

修改data以實(shí)現(xiàn)數(shù)據(jù)響應(yīng)式

Vue為了實(shí)現(xiàn)在數(shù)據(jù)變化時(shí)對(duì)頁(yè)面重新渲染。所以在初始化時(shí)對(duì)傳進(jìn)來(lái)來(lái)的數(shù)據(jù)對(duì)象進(jìn)行監(jiān)聽(tīng)。

怎么保證你的變化我Vue能監(jiān)聽(tīng)到?

監(jiān)聽(tīng)的操作就是:對(duì)數(shù)據(jù)對(duì)象的每一個(gè)數(shù)據(jù),內(nèi)部?jī)?nèi)部聲明一個(gè)變量,存儲(chǔ)這個(gè)傳進(jìn)來(lái)的初始值,然后開始了代理模式。后續(xù)對(duì)這個(gè)數(shù)據(jù)的讀取和修改,實(shí)際都是對(duì)這個(gè)內(nèi)部變量的getter和setter。由此所有的修改都會(huì)經(jīng)過(guò)setter,那么只需要setter的時(shí)候觸發(fā)監(jiān)聽(tīng)函數(shù),渲染頁(yè)面即可。

當(dāng)你把一個(gè)普通的 JavaScript 對(duì)象傳入 Vue 實(shí)例作為 data 選項(xiàng),Vue 將遍歷此對(duì)象所有的 property,并使用 Object.defineProperty 把這些 property 全部轉(zhuǎn)為 getter/setter。

每個(gè)組件實(shí)例都對(duì)應(yīng)一個(gè) watcher 實(shí)例,它會(huì)在組件渲染的過(guò)程中把“接觸”過(guò)的數(shù)據(jù) property 記錄為依賴。之后當(dāng)依賴項(xiàng)的 setter 觸發(fā)時(shí),會(huì)通知 watcher,從而使它關(guān)聯(lián)的組件重新渲染。

那么返回給外部的,實(shí)際是一個(gè)經(jīng)過(guò)篡改的,經(jīng)過(guò)了代理的數(shù)據(jù)對(duì)象。

如果初始值沒(méi)給這個(gè)變量Vue還能監(jiān)聽(tīng)嗎?

這里面有個(gè)新手易犯的問(wèn)題是:一開始傳進(jìn)數(shù)據(jù)對(duì)象時(shí)忘記傳這個(gè)變量或無(wú)法傳這個(gè)變量。

由于 JavaScript 的限制,Vue 不能檢測(cè)數(shù)組和對(duì)象的變化。

如果后面使用了這個(gè)變量,那么后面對(duì)這個(gè)變量進(jìn)行更新時(shí)頁(yè)面不會(huì)變化的,因?yàn)関ue根本沒(méi)監(jiān)聽(tīng)這個(gè)對(duì)象。

解決辦法:

(1)一開始就傳入這個(gè)變量;

(2)對(duì)于對(duì)象:使用Vue.set或vm.$ set在使用之前監(jiān)聽(tīng)變量;

(3)對(duì)于數(shù)組,除了使用對(duì)象的Vue.set或和vm.$set 方法。尤雨溪其實(shí)對(duì)數(shù)組的如下方法進(jìn)行了封裝,使用這些方法的時(shí)候已經(jīng)進(jìn)行了set監(jiān)聽(tīng)。

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

有一個(gè)神奇的測(cè)試題:

<div id="app">
? ? <span class=span-a>
? ? ? {{obj.a}}?
? ? </span>
? ? <span class=span-b>
? ? ? {{obj.b}}
? ? </span>
? </div>
var app = new Vue({
? el: '#app',
? data: {
? ? obj: {
? ? ? a: 'a',
? ? }
? },
})
app.obj.a = 'a2'
app.obj.b = 'b'

最終 span-a 和 span-b 中分別展示什么字符串?答案是:a2和b

原因是視圖在顯示 span-a 的 a2 時(shí),順便更新了 span-b

視圖更新其實(shí)是異步的。

1、當(dāng)我們讓 a 從 ‘a1’ 變成 ‘a2’ 時(shí),Vue 會(huì)監(jiān)聽(tīng)到這個(gè)變化,但是 Vue 并不能馬上更新視圖,因?yàn)?Vue 是使用 Object.defineProperty 這樣的方式來(lái)監(jiān)聽(tīng)變化的,監(jiān)聽(tīng)到變化后會(huì)創(chuàng)建一個(gè)視圖更新任務(wù)到任務(wù)隊(duì)列里。(文檔有寫)

2、所以在視圖更新之前,要先把余下的代碼運(yùn)行完才行,也就是會(huì)運(yùn)行 b = ‘b’。

3、等到視圖更新的時(shí)候,由于 Vue 會(huì)去做 diff(文檔有寫),于是 Vue 就會(huì)發(fā)現(xiàn) a 和 b 都變了,自然會(huì)去更新 span-a 和 span-b。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 在vue中使用echarts實(shí)現(xiàn)飛機(jī)航線水滴圖詞云圖效果

    在vue中使用echarts實(shí)現(xiàn)飛機(jī)航線水滴圖詞云圖效果

    這篇文章主要介紹了在vue中使用echarts實(shí)現(xiàn)飛機(jī)航線?水滴圖?詞云圖,通過(guò)引入中國(guó)地圖JS文件,會(huì)自動(dòng)注冊(cè)地圖,文中結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 詳解vue的數(shù)據(jù)binding綁定原理

    詳解vue的數(shù)據(jù)binding綁定原理

    這篇文章主要介紹了詳解vue的數(shù)據(jù)binding原理介紹,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Vue3實(shí)現(xiàn)clipboard復(fù)制的使用示例

    Vue3實(shí)現(xiàn)clipboard復(fù)制的使用示例

    在日常開發(fā)中,為用戶提供復(fù)制文本功能的需求比較常見(jiàn),下面介紹一款vue3可用的插件,可以快速實(shí)現(xiàn)這個(gè)功能,感興趣的可以了解一下
    2023-11-11
  • vue實(shí)現(xiàn)網(wǎng)易云音樂(lè)純界面

    vue實(shí)現(xiàn)網(wǎng)易云音樂(lè)純界面

    這篇文章主要為大家介紹了vue實(shí)現(xiàn)網(wǎng)易云音樂(lè)純界面過(guò)程詳解,附含詳細(xì)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue實(shí)現(xiàn)多條件篩選超簡(jiǎn)潔代碼

    vue實(shí)現(xiàn)多條件篩選超簡(jiǎn)潔代碼

    這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)多條件篩選的相關(guān)資料,隨著數(shù)據(jù)的不斷增多,我們往往需要在表格中進(jìn)行多條件的篩選,以便快速定位符合我們需求的數(shù)據(jù),需要的朋友可以參考下
    2023-09-09
  • Avue實(shí)現(xiàn)動(dòng)態(tài)查詢與數(shù)據(jù)展示的示例代碼

    Avue實(shí)現(xiàn)動(dòng)態(tài)查詢與數(shù)據(jù)展示的示例代碼

    Avue是一個(gè)基于Vue.js的前端框架,它是由阿里云開發(fā)的一款企業(yè)級(jí)UI組件庫(kù),旨在提供一套全面、易用且高性能的界面解決方案本文介紹了Avue實(shí)現(xiàn)動(dòng)態(tài)查詢與數(shù)據(jù)展示的示例,需要的朋友可以參考下
    2024-08-08
  • Vue指令實(shí)現(xiàn)大屏元素分辨率適配詳解

    Vue指令實(shí)現(xiàn)大屏元素分辨率適配詳解

    這篇文章主要為大家介紹了Vue指令實(shí)現(xiàn)大屏元素分辨率適配詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Vue Router實(shí)現(xiàn)多層嵌套路由的導(dǎo)航的詳細(xì)指南

    Vue Router實(shí)現(xiàn)多層嵌套路由的導(dǎo)航的詳細(xì)指南

    在 Vue 應(yīng)用中,使用 Vue Router 可以輕松實(shí)現(xiàn)多層嵌套路由的導(dǎo)航,嵌套路由允許你創(chuàng)建一個(gè)多層次的 URL 結(jié)構(gòu),這在構(gòu)建具有復(fù)雜導(dǎo)航結(jié)構(gòu)的應(yīng)用程序時(shí)非常有用,需要的朋友可以參考下
    2024-10-10
  • vue 自動(dòng)化路由實(shí)現(xiàn)代碼

    vue 自動(dòng)化路由實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue 自動(dòng)化路由實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • vue項(xiàng)目打包部署到服務(wù)器的方法示例

    vue項(xiàng)目打包部署到服務(wù)器的方法示例

    這篇文章主要介紹了vue項(xiàng)目打包部署到服務(wù)器的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

定兴县| 泸定县| 通化市| 临澧县| 株洲县| 团风县| 常州市| 柯坪县| 徐州市| 文水县| 卓资县| 蒲城县| 那曲县| 铜陵市| 铁岭市| 吉木乃县| 青海省| 浮梁县| 赤峰市| 鹤山市| 长白| 滁州市| 达孜县| 周至县| 土默特右旗| 望都县| 林甸县| 蓬安县| 上高县| 合川市| 伊金霍洛旗| 宁安市| 老河口市| 高雄市| 囊谦县| 曲阜市| 绥德县| 松阳县| 北安市| 方正县| 德州市|