Vue的插值表达式
{{message}}
- (1)mustache 美[ˈmʌstæʃ] 口上须,八字须;
- (2)数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值,Mustache 标签将会被替代为对应数据对象上属性的值
- (3)特点是什么?
绑定的数据对象上属性发生了改变,插值处的内容都会更新
每个绑定都只能包含单个表达式 - (4)案例
{{true ? 'OK':'Not OK'}}
<!-- 这是语句,不是表达式 -->
{{ var a = 1 }} //错误
<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }} //错误
事件1:点击事件 v-on
<body>
<div id="app">
{{message}}
<button v-on:click="func1('hello')">vue的onclick</button>
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
message:'hello Vue3'
}, //对应的数据
methods:{
func1:function (msg) {//msg='hello'
alert(msg)
}
}
}
) //创建了MVVM中的VM对象
</script>
事件2:键盘事件 v-on
- (1) $event表示Vue中的事件对象,类似js中的对象一样。
$event - (2)keyCode是什么?
键盘的编码
<body>
<div id="app">
<input type="text" v-on:keydown="fun($event)">
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
message:'hello Vue3'
}, //对应的数据
methods:{
fun:function (event) {//事件对象包含 event=$event
alert(event.keyCode)
}
}
}
) //创建了MVVM中的VM对象
</script>
事件3:鼠标事件 v-on
- (1)
v-on:mouseover=“函数名()”
表示监听的是鼠标停留事件 - (2)可以简写
@mouseover=”函数名()”
<body>
<div id="app">
<!-- <div v-on:mouseover="fun($event)" style="height: 200px;width: 200px;background-color: green" >-->
<!-- </div>-->
<div @mouseover="fun($event)" style="height: 200px;width: 200px;background-color: green" >
</div>
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
message:'hello Vue3'
}, //对应的数据
methods:{
fun:function (event) {//事件对象包含 event=$event
alert("进入范围")
}
}
}
) //创建了MVVM中的VM对象
</script>
Vue中的事件修饰符
-
(1)什么是事件修饰符?
Vue.js 为 v-on 提供了事件修饰符。
修饰符是由点开头的指令后缀来表示的。相当于调用事件的方法
-
(2)常见修饰符
-
(3)案例
表单提交
嵌套点击 -
(4) prevent与stop
-
prevent消灭事件
-
stop 消灭内部标签传给外部标签的事件
<body>
<div id="app">
<form @submit.prevent action="#" method="post">
<input type="text" name="username"><br/>
<input type="text" name="password"> <br/>
<input type="submit" value="login"> <br/>
</form>
<div>
<a @click.prevent href="http://www.baidu.com">进入百度页面</a>
</div>
<div @click="fun1" style="height: 200px;width: 200px;background-color: green">
<div @click.stop ="fun2" style="height: 100px;width: 100px;background-color: red">
</div>
</div>
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
message:'hello Vue3'
} ,//对应的数据
methods:{
fun1:function () {
alert("我是绿的")
},
fun2:function () {
alert("我是红的")
}
}
}
) //创建了MVVM中的VM对象
</script>
Vue中的按键修饰符
-
(1)什么是按键修饰符
Vue 允许为 v-on 在监听键盘事件时添加按键修饰符
相当于对keyCode进行判断,如查是符合条件的按键才执行对应的函数
-
(2)案例
<body>
<div id="app">
<input type="text" v-on:keyup.enter="fun1($event)">
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
message:'hello Vue3'
} ,//对应的数据
methods:{
fun1:function (event) {
//if(event.keyCode==13){
alert("你点了回车")
//}
}
}
}
) //创建了MVVM中的VM对象
</script>
读data数据的三个指令
- (1)v-text 读data中的数据(代码),显示成字符串
- (2)v-html读data中的数据(代码),如果是代码,则执行代码
- (2)v-bind读data中的数据赋值给属性
<body>
<div id="app">
<div v-text="message"></div>
<div >{{message}}</div>
<div v-html="message"></div>
<font v-bind:color="color1">我爱中国</font>
<font :color="color2">我爱中国</font>
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
message:'<font color="green"/>HelloWord</font>',
color1:'green',
color2:'red'
} ,//对应的数据
methods:{
}
}
) //创建了MVVM中的VM对象
</script>
控制显示的指令两个
- (1)v-if读data数据,判断是否显示
- (2)v-show读data数据,判断是否显示
<body>
<div id="app">
<div v-if="flag">我是hello</div>
<div v-show="flag">我是world</div>
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
flag:false
} ,//对应的数据
methods:{
}
}
) //创建了MVVM中的VM对象
</script>
循环指令***重点
- (1)v-for=”(元素) in 数组”
- (2)v-for=”(value,key) in map集合”
- (3)v-for=”(元素,index) in list集合”
读data中的多个元素,循环显示每一个元素
<body>
<div id="app">
<!-- <option v-for="(元素) in 数组"></option>-->
<select >
<option v-for="(name) in arr">{{name}}</option>
</select>
<hr/>
<!-- <li v-for="(值,键)in map集合"></li>-->
<ul>
<li v-for="(value,key) in product">{{key}} , {{value}}</li>
</ul>
<hr/>
<!-- <tr v-for="(元素,索引 ) in 列表">-->
<table border="1px" width="100%">
<tr>
<td>序号</td>
<td>名字</td>
<td>年龄</td>
<td>地址</td>
</tr>
<tr v-for="(user,index ) in userList">
<td>{{index}}</td>
<td>{{user.name}}</td>
<td>{{user.age}}</td>
<td>{{user.address}}</td>
</tr>
</table>
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
arr:['人事部','Java','Python'],
product:{name:'苹果12',price:1000,address:'bj'},
userList:[{name:'jack',age:13,address:'bj'},{name:'rose',age:12,address:'bj'},{name:'tony',age:12,address:'bj'}]
} ,//对应的数据
methods:{
}
}
) //创建了MVVM中的VM对象
</script>
model指令***重点
- (1)v-model是一个指令,限制在
<input>、<select>、<textarea>、components中使用
<body>
<div id="app">
<!--更新-->
<form action="" method="post">
username:<input type="text" v-model="user.username" ><br/>
password:<input type="text" v-model="user.password" ><br/>
<input type="submit" value="login" ><br/>
</form>
<hr/>
{{user.username}}
{{user.password}}
</div>
</body>
<script>
//view model
var vm = new Vue(
{
el:'#app', //让vu掌握指定的视频区域
data:{
user:{username:'jack',password:'123456'}
} ,//对应的数据
methods:{
}
}
) //创建了MVVM中的VM对象
</script>