在 Vue.js 中,指令(Directives)是一种特殊的 HTML 属性,用于对 DOM 进行动态绑定和操作。指令以 v- 前缀开头,用于在模板中对数据进行响应式更新、事件绑定、条件渲染等操作。
1. v-model:
- 用于在表单元素上实现双向数据绑定。它将表单元素的值与 Vue 实例的数据进行关联,实现数据的双向同步。
<template>
<input type="text" v-model="message">
<p>输入的消息: {{ message }}</p>
</template>
<script>
export default {
data() {
return {
message: ''
};
}
};
</script>
在上述示例中,v-model 用于在输入框和数据之间建立双向绑定。用户在输入框中输入的值会自动更新到 message 数据上,并且数据的变化也会反映在输入框中。
2. v-bind:
- 用于动态地绑定 HTML 属性或组件的属性。可以通过 v-bind 将 Vue 实例中的数据绑定到 HTML 元素的属性上,实现动态更新。
<template>
<img v-bind:src="imageUrl">
</template>
<script>
export default {
data() {
return {
imageUrl: 'path/to/image.jpg'
};
}
};
</script>
在这个示例中,v-bind 用于将 imageUrl 数据绑定到 src 属性上。这样,imageUrl 的值会动态地更新到 src 属性上,实现图片的动态加载。
3. v-if / v-else / v-else-if:
- 用于根据条件进行条件渲染。可以根据表达式的真假来控制元素的显示和隐藏。
<template>
<div>
<p v-if="isLogged">欢迎,{{ username }}!</p>
<p v-else>请先登录。</p>
</div>
</template>
<script>
export default {
data() {
return {
isLogged: true,
username: 'John'
};
}
};
</script>
在上述示例中,使用 v-if 根据条件进行元素的条件渲染。如果 isLogged 为真,则显示欢迎消息,否则显示请先登录的提示。
4. v-for:
- 用于遍历数组或对象,生成重复的元素。可以使用 v-for 在模板中循环渲染元素,并根据数组或对象的每个项生成相应的内容。
<template>
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Apple' },
{ id: 2, name: 'Banana' },
{ id: 3, name: 'Orange' }
]
};
}
};
</script>
在这个示例中,使用 v-for 循环遍历 items 数组,并生成对应的 < li > 元素。每个元素都有一个唯一的 key 属性来提高性能。
5. v-on:
- 用于绑定事件监听器。可以通过 v-on 将 Vue 实例中的方法绑定到 HTML 元素的事件上,实现事件处理逻辑。
<template>
<button v-on:click="handleClick">点击我</button>
</template>
<script>
export default {
methods: {
handleClick() {
alert('按钮被点击了!');
}
}
};
</script>
在上述示例中,使用 v-on 绑定按钮的点击事件。当按钮被点击时,handleClick 方法会被调用,弹出一个提示框。
6. v-show:
- 与 v-if 类似,用于根据条件进行元素的显示和隐藏,但是使用 v-show 时,元素始终存在于 DOM 中,只是通过 CSS 控制其显示和隐藏。
<template>
<div>
<p v-show="isVisible">这个段落通过 v-show 显示或隐藏。</p>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
};
}
};
</script>
在这个示例中,使用 v-show 根据条件控制元素的显示和隐藏。如果 isVisible 为真,则显示段落;否则,将其隐藏。不同于 v-if,v-show 仅通过 CSS 控制元素的显示和隐藏,元素始终存在于 DOM 中。
7. v-text / v-html:
- 用于动态地更新元素的文本内容。v-text 用于替换元素的文本内容,而 v-html 允许将 HTML 字符串作为元素的内容进行渲染。
<template>
<div>
<p v-text="message"></p>
<p v-html="htmlMessage"></p>
</div>
</template>
<script>
export default {
data() {
return {
message: '这是一段文本消息。',
htmlMessage: '<em>这是一段带有标记的文本消息。</em>'
};
}
};
</script>
在上述示例中,使用 v-text 将 message 数据的值直接作为文本内容显示在 < p > 元素中。而 v-html 将 htmlMessage 数据的值作为 HTML 内容进行解析,并渲染到浏览器中,使文本内容以斜体显示。
8. v-cloak:
- 用于解决 Vue 实例编译过程中的闪烁问题。通过设置 v-cloak 指令,可以保证在 Vue 实例完成编译前,元素始终处于隐藏状态,然后使用 CSS 控制元素的显示。
<template>
<div v-cloak>
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: '这是一条信息。'
};
}
};
</script>
<style>
[v-cloak] {
display: none;
}
</style>
在这个示例中,使用 v-cloak 防止 Vue 实例编译过程中的闪烁问题。通过设置带有 v-cloak 属性的元素的 CSS 样式,将其初始状态设为隐藏。当 Vue 实例完成编译时,样式被移除,元素显示出来。
1191

被折叠的 条评论
为什么被折叠?



