Vue插值语法

Mustache

如何将data中的文本数据,插入到HTML中呢?

之前文章中已经讲过,可以通过Mustache语法(也就是双大括号)。
Mustache:胡须,因为左右两个大括号像两个胡须一样,这是国外人的翻译,在国内也可以叫双大括号
我们可以像下面这样来使用,并且数据是响应式的。

<div id="app">
	<h1>{{message}}</h1>
</div>

<script type="text/javascript">
	var vue = new Vue({
		el:'#app',
		data:{
			message:'simple'
		}
	})
</script>

v-once

在某些情况下,我们可能不希望界面随意的跟随改变,这个时候,我们就可以使用一个Vue命令

v-once:

  • 该指令后面不需要跟任何表达式(比如v-for后面是有跟表达式的)
  • 该指令表示元素和组件(组件后面会写)只渲染一次,不会随着数据的改变而改变。

代码如下:

<div id="app">
	<h1>{{message}}</h1>
	<h1 v-once>{{message}}</h1>
</div>

<script type="text/javascript">
	var vue = new Vue({
		el:'#app',
		data:{
			message:'hello world'
		}
	})
</script>

v-html

某些情况下,我们从服务器请求的数据本身就是一个HTML代码

如果我们直接通过{{}}来输出,会将HTML代码也一起输出,但是我们可能希望的是按照HTML格式进行解析,并且显示对应的内容。
如果我们希望解析出HTML展示
可以使用v-html指令,在该指令后面往往会跟上一个string类型,会将stringhtml解析出来并且进行渲染

<div id="app">
	<h1>{{link}}</h1>
	<h1 v-html="link"></h1>
</div>

<script type="text/javascript">
	var vue = new Vue({
		el:'#app',
		data:{
			link:'<a href="https://www.baidu.com">百度一下</a>'
		}
	})
</script>

v-text

v-text作用和Mustache比较相似,都是用于数据显示在界面中,v-text通常情况下,接受一个string类型

<div id="app">
	<h1 v-text="name"></h1>
	<!-- 如果使用了v-text指令,那么我们在标签中写入的内容将会被覆盖,所以它并不是特别灵活 -->
	<!-- <h1 v-text="name">,你好</h1> -->
	<h1>{{name}}</h1>
</div>

<script type="text/javascript">
	var vue = new Vue({
		el:'#app',
		data:{
			name:'simple'
		}
	})
</script>

v-pre

v-pre用于跳过这个元素和它之元素的编译过程,用于显示原本的Mustache语法,比如下面的代码:

  • 第一个h1元素中的内容会被编译解析出来
  • 第二个h1元素中会直接显示{{message}}
<div id="app">
	<h1>{{message}}</h1>
	<h1 v-pre>{{message}}</h1>
</div>

<script type="text/javascript">
	var vue = new Vue({
		el:'#app',
		data:{
			message:'simple'
		}
	})
</script>

v-cloak

在某些情况下, 我们浏览器可能会直接显示出未编译的Mustache标签。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../vue.js"></script>
		<style>
			[v-cloak]{
				display: none;
			}
		</style>
	</head>
	<body>
		<!-- v-once:当页面加载完只把我的数据第一次展示出来就可以了,后面数据改变不改变页面数据 -->
		<div id="app">
			<h1 v-cloak>{{message}}</h1>
		</div>
		<script type="text/javascript">
			// 延时1秒钟加载数据
			// 在vue解析之前,div中有一个属性v-cloak
			// 在vue解析之后,div中没有属性v-cloak
			setTimeout(function(){
				var vue = new Vue({
					el:'#app',
					data:{
						message:'simple'
					}
				})
			},1000)
		</script>
	</body>
</html>

原文地址:https://www.cnblogs.com/insipid/p/13850084.html