詳解template標(biāo)簽用法(含vue中的用法總結(jié))
一、html5中的template標(biāo)簽
html中的template標(biāo)簽中的內(nèi)容在頁面中不會顯示。但是在后臺查看頁面DOM結(jié)構(gòu)存在template標(biāo)簽。這是因為template標(biāo)簽天生不可見,它設(shè)置了display:none;屬性。
<!--當(dāng)前頁面只顯示"我是自定義表現(xiàn)abc"這個內(nèi)容,不顯示"我是template",這是因為template標(biāo)簽天生不可見--> <template><div>我是template</div></template> <abc>我是自定義表現(xiàn)abc</abc>
二、template標(biāo)簽操作的屬性和方法
content屬性:在js中template標(biāo)簽對應(yīng)的dom對象存在content屬性,對應(yīng)的屬性值是一個dom節(jié)點,節(jié)點的nodeName是#document-fragment。通過該屬性可以獲取template標(biāo)簽中的內(nèi)容,template對象.content可以調(diào)用getElementById、querySelector、querySelectorAll方法來獲取里面的子節(jié)點。innerHTML:可以獲取template標(biāo)簽中的html。
<template id="tem">
<div id="div1">我是template</div>
<div>我是template</div>
</template>
<script>
let o = document.getElementById("tem");
console.log(o.content.nodeName);//#document-fragment
console.log(o.content.querySelectorAll("div"));//NodeList(2) [div#div1, div]。得到一個類數(shù)組
console.log(o.content.getElementById("div1"));//<div id="div1">我是template</div>
console.log(o.innerHTML);//'<div id="div1">我是template</div><div>我是template</div>'
</script>
三、vue中的template
1、template標(biāo)簽在vue實例綁定的元素內(nèi)部
它是可以顯示template標(biāo)簽中的內(nèi)容,但是查看后臺的dom結(jié)構(gòu)不存在template標(biāo)簽。如果template標(biāo)簽不放在vue實例綁定的元素內(nèi)部默認(rèn)里面的內(nèi)容不能顯示在頁面上,但是查看后臺dom結(jié)構(gòu)存在template標(biāo)簽。
<div id="app">
<!--此處的template標(biāo)簽中的內(nèi)容顯示并且在dom中不存在template標(biāo)簽-->
<template>
<div>我是template</div>
<div>我是template</div>
</template>
</div>
<!--此處的template標(biāo)簽中的內(nèi)容在頁面中不顯示,但是在dom結(jié)構(gòu)存在該標(biāo)簽及內(nèi)部結(jié)構(gòu)-->
<template id="tem">
<div id="div1">我是template</div>
<div>我是template</div>
</template>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
let vm = new Vue({
el: "#app",
});
</script>
注意: vue實例綁定的元素內(nèi)部的template標(biāo)簽不支持v-show指令,即v-show="false"對template標(biāo)簽來說不起作用。但是此時的template標(biāo)簽支持v-if、v-else-if、v-else、v-for這些指令。
<div id="app">
<template v-if="true">
<!--此時template標(biāo)簽中的內(nèi)容顯示在頁面上,但是看dom結(jié)構(gòu)沒有template標(biāo)簽-->
<div>我是template</div>
<div>我是template</div>
</template>
<div v-if="true">
<!--此時頁面上顯示div標(biāo)簽中的內(nèi)容,并且看dom結(jié)構(gòu)存在最外面的div標(biāo)簽-->
<div>我是template</div>
<div>我是template</div>
</div>
<!--此處會輸出6個‘我是template'并且dom結(jié)構(gòu)中不存在template標(biāo)簽-->
<template v-for="a in 3">
<div>我是template</div>
<div>我是template</div>
</template>
</div>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
let vm = new Vue({
el: "#app",
});
</script>
2、vue實例中的template屬性
將實例中template屬性值進(jìn)行編譯,并將編譯后的dom替換掉vue實例綁定的元素,如果該vue實例綁定的元素中存在內(nèi)容,這些內(nèi)容會直接被覆蓋。
1)如果vue實例中有template屬性,會將該屬性值進(jìn)行編譯,將編譯后的虛擬dom直接替換掉vue實例綁定的元素(即el綁定的那個元素);
特點:
2)template屬性中的dom結(jié)構(gòu)只能有一個根元素,如果有多個根元素需要使用v-if、v-else、v-else-if設(shè)置成只顯示其中一個根元素;
3)在該屬性對應(yīng)的屬性值中可以使用vue實例data、methods中定義的數(shù)據(jù)。
<!--此處頁面顯示hello-->
<div id="app"></div>
<!--此處template標(biāo)簽必須在vue綁定的元素外面定義,并且在頁面中不顯示下面的template標(biāo)簽中的內(nèi)容-->
<template id="first">
<div v-if="flag">{{msg}}<div>
<div v-else>111<div>
</template>
<script src="./node_modules/vue/dist/vue.js"></script>
<script>
let vm = new Vue({
el:"#app",
data:{
msg:"hello",
flag:true
},
template:"#first"http://通過該屬性可以將自定義的template屬性中的內(nèi)容全部替換app的內(nèi)容,并且會覆蓋里面原有的內(nèi)容,并且在查看dom結(jié)構(gòu)時沒有template標(biāo)簽
});
</script>
上面的例子中html中的template標(biāo)簽可以變成自定的標(biāo)簽,如下。但是下面這種方式也可以將<abc></abc>標(biāo)簽中的內(nèi)容替換掉app元素,但是<abc></abc>標(biāo)簽中的內(nèi)容也會顯示在頁面上。所以此處利用template標(biāo)簽來定義vue實例中需要設(shè)置的template屬性。
<abc id="first">
<div v-if="flag">{{msg}}<div>
<div v-else>111<div>
</abc>
上面的實例還可以寫成下面的形式
<!--此處頁面顯示hello-->
<div id="app"></div>
<script src="./node_modules/vue/dist/vue.js"></script>
<script>
let vm = new Vue({
el:"#app",
data:{
msg:"hello",
flag:true
},
template:"<div v-if='flag'>{{msg}}</div><div v-else>123</div>"http://模板中只能有一個根元素,如果有多個需要使用v-if、v-else、v-else-if來選擇顯示哪一個
});
</script>
到此這篇關(guān)于詳解template標(biāo)簽用法(含vue中的用法總結(jié))的文章就介紹到這了,更多相關(guān)template標(biāo)簽用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript數(shù)據(jù)結(jié)構(gòu)之鏈表各種操作詳解
數(shù)據(jù)結(jié)構(gòu)是一種有效處理大量數(shù)據(jù)的手段,了解它的結(jié)構(gòu)和組成為我們提供了更有效的工具來設(shè)計與某些問題相關(guān)的產(chǎn)品。這次我們將進(jìn)行鏈表介紹,回顧它的特點和用途2022-10-10
JavaScript cookie與session的使用及區(qū)別深入探究
這篇文章主要介紹了Java中Cookie和Session詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-10-10
深入JS函數(shù)中默認(rèn)參數(shù)的使用詳解
本文主要介紹了深入JS函數(shù)中默認(rèn)參數(shù)的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
使用js實現(xiàn)將后臺傳入的json數(shù)據(jù)放在前臺顯示
今天小編就為大家分享一篇使用js實現(xiàn)將后臺傳入的json數(shù)據(jù)放在前臺顯示,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
JavaScript中的常見問題解決方法(亂碼,IE緩存,代理)
這篇文章主要是對JavaScript中的常見問題解決方法(亂碼,IE緩存,代理)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所 幫助2013-11-11

