摘要:并在上面使用,最終渲染結(jié)果將不包括元素。另外一個(gè)根據(jù)條件展示元素的指令,用法與大致相同。注意,不支持元素,也不支持與看完了文章,你會(huì)發(fā)現(xiàn)我們可以利用和兩個(gè)指令來(lái)控制我們?cè)氐男袨椤?/p>
熟悉 Angular 的同學(xué)對(duì)指令肯定不會(huì)陌生,Vue中也借鑒了指令這一特性,在 Vue 中指令都是帶有 v- 的特殊屬性,那么指令有什么作用呢?
我的理解就是:指令是用來(lái)控制 DOM 元素的行為,例如最簡(jiǎn)單的顯示,隱藏。
Vue 中有很多指令,在今后的學(xué)習(xí)過(guò)程總我們會(huì)逐步的學(xué)習(xí),今天我們就來(lái)說(shuō)說(shuō)我們非常常用的兩個(gè)條件指令 v-if 和 v-show。
v-if看到 v-if 你肯定會(huì)想到 Javascrip 中的 if else 條件判斷語(yǔ)句,你會(huì)想是不是還會(huì)有 v-else 指令,沒(méi)錯(cuò) Vue 中不僅給我們提供了 v-else 指令而且還給我們提供了 v-else-if指令。
既然這樣我們就很好理解 v-if 指令了,其實(shí)就是根據(jù)表達(dá)式的值是真(true)假(false)來(lái)重建或者銷毀一個(gè)我們綁定的 DOM 元素。
怎么樣,通過(guò)我這么一說(shuō)你對(duì) if 指令有了更清楚的認(rèn)識(shí)了吧?
什么東西啊,你這叫解釋的還行?(有些人)
好吧,我覺(jué)得我解釋的還行,如果你覺(jué)得不行,我們就直接一點(diǎn)擼代碼寫(xiě)個(gè)案例,讓你一看就懂。
你看不見(jiàn)我,你看不見(jiàn)我,你看不見(jiàn)我
執(zhí)行上面的代碼,你會(huì)發(fā)現(xiàn)頁(yè)面上除了什么都沒(méi)有,還是什么都沒(méi)有,總之你什么都看不見(jiàn),就是不讓你看見(jiàn),怎么辦?
我告訴你這個(gè)非常好辦呀,把它打出來(lái)就行了,我們?cè)跒g覽器的控制臺(tái)打 vm.isShow=true 你就能看出效果了,不信?那我們就來(lái)試試。
看到了上面這個(gè)神奇的效果,我們?cè)賮?lái)思考一個(gè)問(wèn)題,我們上面是在切換單個(gè) DOM 元素,我們能不能來(lái)切換多個(gè)元素或者說(shuō)嵌套元素呢?
你看不見(jiàn)我,你看不見(jiàn)我,你看不見(jiàn)我
呀,好像被你發(fā)現(xiàn)了!
正如我們的預(yù)期一樣,我們嵌套多層元素也是沒(méi)有問(wèn)題的,效果還是那個(gè)效果。不過(guò)在 Vue 中推薦我們使用 標(biāo)簽包裹元素。并在上面使用 v-if,最終渲染結(jié)果將不包括 元素。
你看不見(jiàn)我,你看不見(jiàn)我,你看不見(jiàn)我
呀,好像被你發(fā)現(xiàn)了!
可以看到我們代碼中使用的 標(biāo)簽在渲染的時(shí)候沒(méi)有顯示
v-else上面我們已經(jīng)提到了 v-else指令,它必須緊跟在帶 v-if 或者 v-else-if 的元素的后面,否則它將不會(huì)被識(shí)別。,我們用一個(gè)例子來(lái)看下它的用。
Modeng 是怎么樣的一個(gè)人?
非常帥還是帥
我們會(huì)看到這樣一個(gè)效果
如果我們修改下條件表達(dá)式的值
你會(huì)發(fā)現(xiàn)結(jié)果怎么還是帥,難道 Modeng 除了帥就沒(méi)有別的結(jié)果了嗎?其實(shí),仔細(xì)的同學(xué)會(huì)發(fā)現(xiàn),兩個(gè)帥的不一樣。
在這里只是和大家開(kāi)個(gè)玩笑,其實(shí)我沒(méi)有大家想象的那么帥,只是想通過(guò)這個(gè)例子讓大家更容易理解和記住 v-else,你會(huì)發(fā)現(xiàn)我們的 v-if v-else指令和我們理解的 Javascript 中的 if else 一樣都是非此即彼的結(jié)果。
我們?cè)跒g覽網(wǎng)站的時(shí)候,經(jīng)常會(huì)遇到這么一個(gè)情況,你在沒(méi)有登陸的時(shí)候你看到的以一種內(nèi)容,你在登陸的時(shí)候看到的又是另一種內(nèi)容。如果我們用 if else指令就很好實(shí)現(xiàn),大家可以自己嘗試一下,我給一個(gè)簡(jiǎn)單的例子,更好玩的大家去發(fā)現(xiàn)。
恭喜,恭喜,你竟然看到了我?guī)洑獾娜菝玻?/div>v-else-if登陸才可以查看更多內(nèi)容顧名思義,我們不做過(guò)多的解釋,因?yàn)榍懊嫖覀円呀?jīng)解釋過(guò),大家都明白的,v-else-if 還可以連續(xù)使用。
v-else-if 也必須緊跟在帶 v-if 或者 v-else-if 的元素之后。
我是誰(shuí)?我在哪?我怎么了?誰(shuí)能救救我!看個(gè)動(dòng)圖啥都明白了。
v-show另外一個(gè)根據(jù)條件展示 DOM 元素的指令,用法與 v-if大致相同。
不同點(diǎn)是:v-if控制的DOM元素的添加與刪除,會(huì)存在 DOM 的渲染與銷毀的過(guò)程。而 v-show 只是簡(jiǎn)單的控制元素的 CSS 的 display 屬性。
當(dāng) v-show 的值為 true 時(shí),綁定 DOM 的 display: block,當(dāng)值為 false 時(shí),綁定 DOM 的 display: none。
我只是用來(lái)控制 display 的屬性值我們可以清楚的看到 DOM 元素始終是存在的,v-show 只是利用元素的 display 屬性控制著元素的顯示隱藏。
注意,v-show 不支持 元素,也不支持 v-else
v-if 與 v-show看完了文章,你會(huì)發(fā)現(xiàn)我們可以利用v-if和v-show 兩個(gè)指令來(lái)控制我們 DOM 元素的行為。但是兩者又存在一定的區(qū)別,那么你該如何去選擇使用那個(gè)指令呢?
來(lái)一起看官方的回答:
v-if 是“真正”的條件渲染,因?yàn)樗鼤?huì)確保在切換過(guò)程中條件塊內(nèi)的事件監(jiān)聽(tīng)器和子組件適當(dāng)?shù)乇讳N毀和重建。
v-if 也是惰性的:如果在初始渲染時(shí)條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r(shí),才會(huì)開(kāi)始渲染條件塊。
相比之下 v-show 就簡(jiǎn)單得多——不管初始條件是什么,元素總是會(huì)被渲染,并且只是簡(jiǎn)單地基于 CSS 進(jìn)行切換。
一般來(lái)說(shuō) v-if 有更高的切換開(kāi)銷,而 v-show 有更高的初始渲染開(kāi)銷。因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運(yùn)行時(shí)條件很少改變,則使用 v-if 較好。
總結(jié)我們可以利用不同的方法去控制我們的 DOM 行為。
v-if和v-show 都可以控制元素的顯示隱藏但是有本質(zhì)區(qū)別的,v-if 是控制元素的添加與刪除,而 v-show 只是控制元素的 display 屬性。
認(rèn)識(shí)到兩者的區(qū)別我們就可以肯定自己的場(chǎng)景去選擇對(duì)應(yīng)的方法,如果你的元素頻繁切換建議使用 v-show,反之你可以使用 v-if。
關(guān)注微信公眾號(hào):六小登登。領(lǐng)取全套學(xué)習(xí)資源
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/98178.html
摘要:模版語(yǔ)法中的模版是基于的模版語(yǔ)法,所有的模版都是合法的,所以能被遵循規(guī)范的瀏覽器和解析器解析。表達(dá)式模版中不僅僅可以進(jìn)行簡(jiǎn)單的數(shù)據(jù)綁定操作,我們還可以在模版中進(jìn)行簡(jiǎn)單的表達(dá)式。我們也簡(jiǎn)單的敘述了模版編譯的整個(gè)流程。 我們?cè)谏弦黄f(shuō)到如何把 Vue 實(shí)例中的數(shù)據(jù)顯示到視圖中,就會(huì)需要用到我們的模版,我們只是簡(jiǎn)單的使用了一些,模版其實(shí)還有很多其他的特性。今天我們就來(lái)看看模版的其他特性。 模...
摘要:如果一次判斷的是多個(gè)元素,可以在內(nèi)置的元素上使用條件指令,最終渲染的結(jié)果不會(huì)包含該元素。列表渲染也支持用代替作為分隔符,它更接近迭代器的語(yǔ)法的表達(dá)式支持一個(gè)可選參數(shù)作為當(dāng)前項(xiàng)的索引。分隔符前的語(yǔ)句使用括號(hào),第二項(xiàng)就是當(dāng)前項(xiàng)的索引。 學(xué)習(xí)筆記:內(nèi)置指令 內(nèi)置指令 基本指令 v-cloak v-cloak不需要表達(dá)式,它會(huì)在Vue實(shí)例結(jié)束編譯時(shí)從綁定的HTML元素上移除,經(jīng)常和CSS的d...
摘要:第二個(gè)是其值是或,確認(rèn)是否深入監(jiān)聽(tīng)。一般監(jiān)聽(tīng)時(shí)是不能監(jiān)聽(tīng)到對(duì)象屬性值的變化的,數(shù)組的值變化可以聽(tīng)到第三個(gè)是其值是或,確認(rèn)是否以當(dāng)前的初始值執(zhí)行的函數(shù)?;旌隙x來(lái)分發(fā)組件中的可復(fù)用功能結(jié)束,撒花文章已同步我的筆記,歡迎大家加,加后人生更加美好 vue.js記錄 文章已同步我的github筆記https://github.com/ymblog/blog,歡迎大家加star~~,加star后...
摘要:示例了解一門(mén)語(yǔ)言,或者學(xué)習(xí)一門(mén)新技術(shù),編寫(xiě)示例是我們的必經(jīng)之路。分割線元素是否渲染在中,取決于前面使用的是還是指令。添加完對(duì)象后,重置對(duì)象刪一個(gè)數(shù)組元素 Vue.js是當(dāng)下很火的一個(gè)JavaScript MVVM庫(kù),它是以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的。相比于Angular.js,Vue.js提供了更加簡(jiǎn)潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。 MVVM模式 下...
摘要:以及條件指令類似于里的,這三個(gè)指令根據(jù)表達(dá)式的值對(duì)組件進(jìn)行渲染銷毀。如果想一次性判斷多個(gè)元素,可以將他們包裹在之內(nèi),使用條件指令操作外層的,并不會(huì)包含在最終的渲染結(jié)果中。要是不希望被復(fù)用,需要在指定的元素上添加值,值存在且唯一。 v-if、v-else-if、v-else以及v-show 條件指令v-if、v-else-if、v-else 類似于JavaScript里的if、else-...
閱讀 1216·2021-11-24 09:39
閱讀 3685·2021-09-02 15:21
閱讀 2233·2021-08-24 10:01
閱讀 779·2021-08-19 10:55
閱讀 2500·2019-08-30 15:55
閱讀 1280·2019-08-30 14:16
閱讀 3080·2019-08-29 15:17
閱讀 3301·2019-08-29 13:53