處理依賴,Vue還提供了另外一種處理依賴的方法:偵聽(tīng)對(duì)象。
再computed屬性里面,我們?cè)O(shè)置需要計(jì)算的屬性,而在函數(shù)里面設(shè)置計(jì)算這個(gè)屬性的邏輯,偵聽(tīng)屬性采用的則是另外一種機(jī)制,把想要偵聽(tīng)的屬性名稱設(shè)置為鍵,這里就是counter這個(gè)鍵,必須與屬性名稱相同,這里就是data屬性中的counter屬性,在函數(shù)中指定counter屬性變化時(shí)需要執(zhí)行的代碼,Vue會(huì)自動(dòng)把屬性變化之后的數(shù)值傳遞給該函數(shù),以允許我們對(duì)屬性變化做出反應(yīng),所以這里我也可以通過(guò)設(shè)置一個(gè)全局輸出變量來(lái)實(shí)現(xiàn),有時(shí)可能確實(shí)得這樣,比如屬性不能像這里這樣計(jì)算,然后再其它地方設(shè)置變量值,雖然這樣做也可以,但是我會(huì)馬上告訴你最佳方法還是盡量再允許的情況下多使用計(jì)算屬性,因?yàn)檫@樣做優(yōu)化最好,比如使用緩存等等,通過(guò)減少不必要的任務(wù),讓Vue允許更快,盡管有時(shí)候你需要對(duì)每一次變化做出反應(yīng),另外一個(gè)計(jì)算屬性不能實(shí)現(xiàn)的功能是,執(zhí)行異步任務(wù),計(jì)算屬性必須同步執(zhí)行,也就是說(shuō)再compute的函數(shù)里面,必須立即返回一個(gè)返回值,中間不能訪問(wèn)服務(wù)器或者執(zhí)行異步任務(wù),如果需要執(zhí)行異步任務(wù),或者像前面一樣,需要再屬性更新時(shí)執(zhí)行的代碼,那就不能用計(jì)算屬性來(lái)解決了。這時(shí)你就可以使用偵聽(tīng)對(duì)象。比如你打算兩秒后充值counter屬性值,再watch:counter里面增加一個(gè)setTimeout()方法,注意,因?yàn)檫@個(gè)函數(shù)再回調(diào)內(nèi)的閉包里,所以必須再另外一個(gè)變量中存儲(chǔ)Vue實(shí)例,this讓我們可以方便第訪問(wèn)實(shí)例中的各個(gè)屬性,但是它必須放在一個(gè)變量里,Vue實(shí)例的屬性以及其它的數(shù)據(jù),再Vue實(shí)例的默認(rèn)對(duì)象和函數(shù)里面都可以通過(guò)this直接訪問(wèn),但是再回調(diào)閉包里面則不行。
查看效果,改變counter值,但是兩秒后被充值,因?yàn)樵O(shè)置了偵聽(tīng)對(duì)象,所以counter一變化就會(huì)調(diào)用函數(shù),執(zhí)行這部分代碼就可以訪問(wèn)異步任務(wù)了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。