vue学习笔记二模板语法

文本插值

最基本的数据绑定形式是文本插值,它使用的是“Mustache”语法 (即双大括号):

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

双大括号标签会被替换为相应组件实例中 msg 属性的值。同时每次 msg 属性更改时它也会同步更新 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<template>
<span> Message:{{msg}}</span>
</template>

<script>
export default {
  name:"text",
  data(){
    return{
        msg:"消息提醒"
    }
  }
}
</script>

原始 HTML

双大括号将会将数据插值为纯文本,而不是 HTML。若想插入 HTML,你需要使用 v-html 指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

<template>
    <div>
        <p>插值方式:{{rawHtml}}</p>
        <p >HTML方式:<span v-html="rawHtml"></span></p>
    </div>
</template>

<script>
export default{
    name:"RawHtml",
    data(){
        return {
        rawHtml:"<a href='http://www.baidu.com'>百度</a>"
    }
   }
}
</script>

Attribute 绑定

双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute,应该使用 v-bind 指令

1
<div v-bind:id="dynamicId"></div>

v-bind 指令指示 Vue 将元素的 id attribute 与组件的 dynamicId 属性保持一致。如果绑定的值是 null 或者 undefined,那么该 attribute 将会从渲染的元素上移除。

简写

1
<div :id="dynamicId"></div>

开头为 : 的 attribute 可能和一般的 HTML attribute 看起来不太一样,但它的确是合法的 attribute 名称字符,并且所有支持 Vue 的浏览器都能正确解析它。此外,他们不会出现在最终渲染的 DOM 中

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

<template>
    <div v-bind:id="dynamicId">
        Attribute 绑定ID
    </div>
    <div :id="dynamicId">
        Attribute 绑定ID 简写
    </div>
</template>

<script>
export default {
    name: "attributeBindings",
    data() {
        return {
            dynamicId: "10001"
        }
    }
}
</script>

使用 JavaScript 表达式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<template>
    <div>
        <p>{{number +1}}</p>
        <p>isok:{{ok ? 'YES':'NO' }}</p>
        <p>message:{{message.split('').reverse().join('')}}</p>
    </div>
</template>

<script>
export default {
    name: "JavaScript",
    data() {
        return {
            number:10,
            ok:'YES',
            message:'Hello'
        }
    }
}
</script>

这些表达式会在当前活动实例的数据作用域下作为JavaScript被解析。有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。

1
2
3
4
5
6
<!-- 这是语句,不是表达式-->
{{ var a = 1 }}

<!--流程控制也不会生效,请使用三元表达式-->
{{if(ok) { return message }}}


vue学习笔记二模板语法
https://www.songhaozhi.com/2022/09/02/template-syntax/
Beitragsautor
宋浩志
Veröffentlicht am
September 2, 2022
Urheberrechtshinweis