关于template标签用法总结(含vue中的用法总结)
一、html5中的template标签
html中的template标签中的内容在页面中不会显示。但是在后台查看页面DOM结构存在template标签。这是因为template标签天生不可见,它设置了display:none;属性。
1 <!--当前页面只显示"我是自定义表现abc"这个内容,不显示"我是template",这是因为template标签天生不可见-->
2 <template><div>我是template</div></template>
3 <abc>我是自定义表现abc</abc>
二、template标签操作的属性和方法
content属性:在js中template标签对应的dom对象存在content属性,对应的属性值是一个dom节点,节点的nodeName是#document-fragment。通过该属性可以获取template标签中的内容,template对象.content可以调用getElementById、querySelector、querySelectorAll方法来获取里面的子节点。
innerHTML:可以获取template标签中的html。
1 <template id="tem">
2 <div id="div1">我是template</div>
3 <div>我是template</div>
4 </template>
5 <script>
6 let o = document.getElementById("tem");
7 console.log(o.content.nodeName);//#document-fragment
8 console.log(o.content.querySelectorAll("div"));//NodeList(2) [div#div1, div]。得到一个类数组
9 console.log(o.content.getElementById("div1"));//<div id="div1">我是template</div>
10 console.log(o.innerHTML);//'<div id="div1">我是template</div><div>我是template</div>'
11 </script>
三、vue中的template
1、template标签在vue实例绑定的元素内部
它是可以显示template标签中的内容,但是查看后台的dom结构不存在template标签。如果template标签不放在vue实例绑定的元素内部默认里面的内容不能显示在页面上,但是查看后台dom结构存在template标签。
1 <div id="app">
2 <!--此处的template标签中的内容显示并且在dom中不存在template标签-->
3 <template>
4 <div>我是template</div>
5 <div>我是template</div>
6 </template>
7 </div>
8 <!--此处的template标签中的内容在页面中不显示,但是在dom结构存在该标签及内部结构-->
9 <template id="tem">
10 <div id="div1">我是template</div>
11 <div>我是template</div>
12 </template>
13 <script src="node_modules/vue/dist/vue.js"></script>
14 <script>
15 let vm = new Vue({
16 el: "#app",
17 });
18 </script>
注意: vue实例绑定的元素内部的template标签不支持v-show指令,即v-show="false"对template标签来说不起作用。但是此时的template标签支持v-if、v-else-if、v-else、v-for这些指令。
1 <div id="app">
2 <template v-if="true">
3 <!--此时template标签中的内容显示在页面上,但是看dom结构没有template标签-->
4 <div>我是template</div>
5 <div>我是template</div>
6 </template>
7 <div v-if="true">
8 <!--此时页面上显示div标签中的内容,并且看dom结构存在最外面的div标签-->
9 <div>我是template</div>
10 <div>我是template</div>
11 </div>
12 <!--此处会输出6个‘我是template’并且dom结构中不存在template标签-->
13 <template v-for="a in 3">
14 <div>我是template</div>
15 <div>我是template</div>
16 </template>
17 </div>
18 <script src="node_modules/vue/dist/vue.js"></script>
19 <script>
20 let vm = new Vue({
21 el: "#app",
22 });
23 </script>
2、vue实例中的template属性
将实例中template属性值进行编译,并将编译后的dom替换掉vue实例绑定的元素,如果该vue实例绑定的元素中存在内容,这些内容会直接被覆盖。
特点:
1)如果vue实例中有template属性,会将该属性值进行编译,将编译后的虚拟dom直接替换掉vue实例绑定的元素(即el绑定的那个元素);
2)template属性中的dom结构只能有一个根元素,如果有多个根元素需要使用v-if、v-else、v-else-if设置成只显示其中一个根元素;
3)在该属性对应的属性值中可以使用vue实例data、methods中定义的数据。
1 <!--此处页面显示hello-->
2 <div id="app"></div>
3 <!--此处template标签必须在vue绑定的元素外面定义,并且在页面中不显示下面的template标签中的内容-->
4 <template id="first">
5 <div v-if="flag">{{msg}}<div>
6 <div v-else>111<div>
7 </template>
8 <script src="./node_modules/vue/dist/vue.js"></script>
9 <script>
10 let vm = new Vue({
11 el:"#app",
12 data:{
13 msg:"hello",
14 flag:true
15 },
16 template:"#first"//通过该属性可以将自定义的template属性中的内容全部替换app的内容,并且会覆盖里面原有的内容,并且在查看dom结构时没有template标签
17 });
18 </script>
上面的例子中html中的template标签可以变成自定的标签,如下。但是下面这种方式也可以将<abc></abc>标签中的内容替换掉app元素,但是<abc></abc>标签中的内容也会显示在页面上。所以此处利用template标签来定义vue实例中需要设置的template属性。
1 <abc id="first">
2 <div v-if="flag">{{msg}}<div>
3 <div v-else>111<div>
4 </abc>
上面的实例还可以写成下面的形式
1 <!--此处页面显示hello-->
2 <div id="app"></div>
3 <script src="./node_modules/vue/dist/vue.js"></script>
4 <script>
5 let vm = new Vue({
6 el:"#app",
7 data:{
8 msg:"hello",
9 flag:true
10 },
11 template:"<div v-if='flag'>{{msg}}</div><div v-else>123</div>"//模板中只能有一个根元素,如果有多个需要使用v-if、v-else、v-else-if来选择显示哪一个
12 });
13 </script>
原文链接:https://blog.csdn.net/u010510187/java/article/details/100356624
关于template标签用法总结(含vue中的用法总结)的更多相关文章
- checkbox在vue中的用法小结
关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样,之前对于vue插 ...
- checkbox在vue中的用法总结
前言 关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样, 之前对于 ...
- template标签就相当于React中的fragment
template标签就相当于React中的fragment
- 【vue】vue中ref用法
1.获取当前元素: 例子: <div class="pop pos-a" :style="{ left: pop_x + 'px' ,top: pop_y + 'p ...
- swiper在vue中的用法
首先通过npm i vue-awesome-swiper --save 来在vue中下载插件 然后再main.js中引入 require('swiper/dist/css/swiper.css')im ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- Vue中import用法
1. 引入第三方插件 第三方常用插件参考https://blog.csdn.net/vbirdbest/article/details/86527886 2. 导入 css 文件 import 'iv ...
- Vue中computed用法
computed是什么?对于任何复杂逻辑,你都应当使用计算属性.computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义.然后就可以在页面上进行双向数据绑定展 ...
- 分享vue中 slot用法
//slot默认用法 //slot带参数name用法
- vue中class用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- WinForm 使用委托动态更新数据
使用委托动态更新数据 详细代码 // 声明一个委托,用于更新消息的文本提示 private delegate void UpdateMsgTextDelegate(string text); // 定 ...
- Vue elementui 进度条随机颜色
项目要求显示进度条,而且进度条的颜色不能重复,所以就有了随机进度条的想法. 实现的最终效果: <el-table-column header-align="center" a ...
- 【Mac + Appium + Java1.8(二)】之Android模拟器自动化测试脚本开发以及简易例子
直接上代码: import io.appium.java_client.AppiumDriver; import org.junit.After; import org.junit.Before; i ...
- 一文剖析TCP三次握手、四次挥手
TCP三次握手四次挥手 问题 TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6. 顺便说一句,原则上任何数据传输都无法确保绝对可靠, ...
- mysql 8.0.18 根据.ibd文件和建库SQL恢复数据
前提:执行建库SQL,(包括建表的SQL) 1. 在mysql 的data文件夹中,找到需要恢复的DB名称,清除其文件夹下的所有文件,将待恢复的.ibd文件复制到此文件夹内 2. 执行SQL,然后查询 ...
- Logstash 配置Java日志格式的方法
Logstash 是用于日志收集的开源工具,通常与 Elasticsearch 和 Kibana 一起使用,形成 ELK Stack(现在称为 Elastic Stack).Logstash 非常灵活 ...
- `std::packaged_task`、`std::thread` 和 `std::async` 的区别与联系
std::packaged_task.std::thread 和 std::async 的区别与联系 std::packaged_task.std::thread 和 std::async 都是 C+ ...
- Java日期时间API系列17-----Jdk8中java.time包中的新的日期时间API类,java日期计算4,2个日期对比,获取相差年月日部分属性和相差总的天时分秒毫秒纳秒等
通过Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别 ,可以看出java8设计非常好,新增了Period和Durati ...
- promise是什么?它有哪些作用?
promsie是es6新增的特性,用来解决回调地狱的问题(异步深层嵌套问题) : 也叫做期约函数,是js内部的构造函数 ,可以当作一个容器,里面保存着某个未来才会结束的事件,比如异步请求 :
- 使用nacos上传配置文件报错
1.使用nacos导入配置文件报错:未读取到合法数据,请检查导入的数据文件. 对比在naocs server中导出的文件,发现是少了一级目录.需要创建一个文件夹,名称为组的名称.因为在nacos上传文 ...