指令介绍
指令
:
带有
v-
前缀的特殊属性。
指令的作用
:
当表达式的值改变时,将其产生的连带影响,响应式地作用于
DOM
。
在整个vue的编写过程当中,只要带v-的,那么都是常用的vue的指令。
v-text
v-text作用与双大花括号作用一样,将数据填充到标签中。但没有闪烁问题!(显示文本)
可以看到做文本的时候可以使用v-text,同时也可以看到在vue框架里面可以在HTML标签当中使用vue属性。
最终将v-text渲染为一个html的文本。在开发过程当中使用vue的语法,但是在实际最终会将vue的语法转化渲染为html页面。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
<link href="" type="text/css" rel="stylesheet"/>
<script src="https://unpkg.com/vue@3"></script>
<style type="text/css">
</style>
</head>
<body>
<div id="hello-vue">
<p v-text="msg"></p>
<p>msg:{{ msg }}</p>
</div>
<script type="text/javascript">
const HelloVueApp = {
data(){
return{
msg: "Hello Vue!"
}
}
}
Vue.createApp(HelloVueApp).mount("#hello-vue")
</script>
</body>
</html>
v-html
显示HTML文本的,某些情况下,从服务端请求的数据本身就是一个
HTML
代码,如果用双大括号会将数据解 释为普通
文本,而非
HTML
代码,为了输出真正的
HTML
,需要使用
v-html
指令
:
可以看到无论是使用v-text也好还是使用花括号也好{{}},它只是将文本显示出来。但是使用v-html的时候那么html的各种属性都能够渲染出来。
v-on
在前端开发中,我们经常监听用户发生的事件,例如点击、拖拽、键盘事件等。 在
Vue
中如何监听
事件呢
?
使用
v-on
指令
v-on:
冒号后面是
event
参数,例如
click
、
change
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
<link href="" type="text/css" rel="stylesheet"/>
<script src="https://unpkg.com/vue@3"></script>
<style type="text/css">
</style>
</head>
<body>
<div id="hello-vue">
<p>点击次数:{{ counter }}</p>
<button type="button" v-on:click="counter++">点击</button>
<br>
<a type="text" v-on:mouseout="counter++">鼠标离开</a>
</div>
<script type="text/javascript">
const HelloVueApp = {
data(){
return{
counter: 0
}
}
}
Vue.createApp(HelloVueApp).mount("#hello-vue")
</script>
</body>
</html>
v-bind
用于动态绑定一个或多个属性值,或者向另一个组件传递props值(这个后面再介绍)
应用场景
:
图片地址
src
、超链接
href
、动态绑定一些类、样式等等
5.1
绑定超链接
v-bind
指令后接收一个参数,以冒号分割。
v-bind
指令将该元素的
href
属性与表达式
url
的值绑定。
使用v-bind就可以在属性里面传递变量了。其实也就是vue渲染为HTML。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
<link href="" type="text/css" rel="stylesheet"/>
<script src="https://unpkg.com/vue@3"></script>
<style type="text/css">
</style>
</head>
<body>
<div id="hello-vue">
<!--href取到url变量的值-->
<a v-bind:href="url">百度</a>
</div>
<script type="text/javascript">
const HelloVueApp = {
data(){
return{
url: "http://www.baidu.com"
}
}
}
Vue.createApp(HelloVueApp).mount("#hello-vue")
</script>
</body>
</html>
2
绑定
Class
操作元素
(
标签
)
的
class
和
style
属性是数据绑 定的一个常见需求。
例如希望动态切换
class
,为
div
显示不同背景颜色
可以动态的去绑定class,
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
<link href="" type="text/css" rel="stylesheet"/>
<script src="https://unpkg.com/vue@3"></script>
<style type="text/css">
.test {
width: 200px;
height: 200px;
background: grey;
}
.active {
background: orange;
}
</style>
</head>
<body>
<div id="hello-vue">
<div v-bind:class="{active: isActive}" class="test"></div>
<button type="button" v-on:click="btn()">增加样式</button>
</div>
<script type="text/javascript">
const HelloVueApp = {
data(){
return{
isActive: false
}
},
methods:{
btn(){
if(this.isActive){
this.isActive = false
}else{
this.isActive = true
}
}
}
}
Vue.createApp(HelloVueApp).mount("#hello-vue")
</script>
</body>
</html>
绑定
Style
v-bind:style
的对象语法看着非常像
CSS
,但其实是一个
JavaScript
对象。
可以使用
v-bind
在
style
样式中传递样式变量。
使用时需要将
css
样式名中带
”-“
的转成驼峰命名法,如
font-size
,转为
fontSize