Vue系列五—模板语法、条件渲染、列表渲染

一、模板语法-插值

1、文本插值

使用双大括号

<span>Message: {{ msg }}</span>

通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但要留心该节点上的其它数据绑定:

<span v-once>这个将不会改变: {{ msg }}</span>

2、原始html

双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,需要使用 v-html 指令:

<p>这是字符串: {{ rawHtml }}</p>
<p>这是 v-html 指令: <span v-html="rawHtml"></span></p>

在这里插入图片描述

3、Attribute

<div v-bind:id="testId"></div>
<div v-bind:class="color"></div>
<button v-bind:disabled="isButtonDisabled">Button</button>
data(){
	return {
		color:'redfont'
	}
}
.redfont{
	color:red;
}

4、使用 JavaScript 表达式

{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>

二、模板语法-指令

指令 (Directives) 是带有 v- 前缀的特殊 attribute

<p v-if="seen">现在你看到我了</p>
<p v-else>看不到哦</p>
<a :href="url">...</a>
<div @click="submit">
	<div @click.stop="innerSubmit">
		提交操作
	</div>
</div>
<-- 提交时,如果内部click事件不加.stop会产生实际冒泡,,控制台依次输出inner、outer !-->
<-- 加上.stop后,inner执行完就结束了,不会向上继续执行 !-->
data(){
	return {
		seen:true,
		url:'https://cn.vuejs.org/v2/guide/syntax.html'
	}
},
methods:{
	submit:function(){
		console.log("outer")
	}
	innerSubmit:function(){
		console.log("inner")
	}
}

三、条件渲染

v-ifv-else-ifv-elsev-show

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

<h1 v-show="ok">Hello!</h1>

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

四、列表渲染

我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。建议尽可能在使用 v-for 时提供 key attribute。

1、用 v-for 把一个数组对应为一组元素

<ul >
  <li v-for="item in items" :key="item.message">
    {{ item.message }}
  </li>
</ul>
<ul>
  <li v-for="(item, index) in items">
    {{ index }} - {{ item.message }}
  </li>
</ul>
data() {
	return{
		items: [
	      { message: 'Foo' },
	      { message: 'Bar' }
	    ]
	}
}

2、在 v-for 里使用对象

可以用 v-for 来遍历一个对象的 property。

<ul>
  <li v-for="value in object">
    {{ value }}
  </li>
</ul>
<div v-for="(value, name, index) in object">
  {{ index }}. {{ name }}: {{ value }}
</div>
data(){
	return {
		object: {
	      title: 'How to do lists in Vue',
	      author: 'Jane Doe',
	      publishedAt: '2016-04-10'
	    }
	}    
}

在这里插入图片描述
在这里插入图片描述

3、在 v-for 里使用值范围

<div>
  <span v-for="n in 10">{{ n }} </span>
</div>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaiery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值