指令
指令是将一些特殊行为应用到页面DOM元素的特殊属性
格式都是以v-开始的,例如:
-
v-model:双向绑定
-
v-if和v-else:元素是否存在
-
v-show:元素是否显示
-
v-on:绑定事件
-
v-bind:绑定属性
v-model 双向绑定
作用:实现标签中数据的双向绑定
实质:监听元素,根据元素的不同选取不同的property抛出不同的事件
适用的表单元素: <input>、<textarea>、<select>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 引入vue -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 定义输入框,绑定msg变量 -->
<input type="text" v-model="msg">
<!-- 与输入框同步值,显示 msg 的值 -->
<h2>{{msg}}</h2>
</div>
</body>
</html>
<script>
var vm = new Vue({
el: "#app",
data:{
// 定义 msg 数据
msg: '',
}
})
</script>
data
- vue中的data属性专门以对象方式存放数据
- vue中data的两种定义方式
<!--第一种:Object-->
<script type="text/javascript">
var app = new Vue({
el:"app",
data:{
isLogin: false
}
})
</script>
<!--第二种:Function-->
<script tyepe="text/javascript">
var app = new Vue({
el:"app",
data(){
return {
islogin: false
}
}
})
</script>
插值
- 方式一
<body>
<div id="app">
<!-- 使用 v-html 绑定原生的html代码 -->
<span v-html="rawHtml"></span>
</div>
</body>
</html>
<script>
var vm = new Vue({
el: "#app",
data:{
// 原生 html 代码块
rawHtml: '<span style="color:red">这里是红色的</span>',
}
})
</script>
- 方式二
<body>
<div id="app">
<!-- 使用JS表达式 -->
<div>{{ ok ? 'Yes' : 'No' }}</div>
</div>
</body>
</html>
<script>
var vm = new Vue({
el: "#app",
data:{
ok: 'sdg',
}
})
</script>
v-model 修饰符
.lazy:用于在事件之后进行同步
.number:将用户的输入值转换为数值类型
.trim:自动过滤用户输入的首部和尾部的空白字符,即空格
<body>
<div id="app">
事件之后进行同步:<input type="text" v-model.lazy="lazy">
<h2>{{lazy}}</h2>
<br>
<!-- typeof 用来区分数据类型,这里用来显示 number 这个变量值的类型,类似于python的type()方法 -->
把用户输入转换成数值类型:<input type="text" v-model.number="number">
<h2>{{typeof number}}</h2>
自动过滤首尾的空格:<input type="text" v-model.trim="trim">
<h2>{{trim}}</h2>
</div>
</body>
</html>
<script>
var vm = new Vue({
el: "#app",
data:{
lazy: '',
number: '',
trim: ''
}
})
</script>