1.vue.js的三种绑定关系
1.属性绑定
- Mustache 语法不能在 HTML attribute 中使用,然而,可以使用 v-bind指令
- 格式: v-bind:属性名=”Vue中data的属性名”
v-bind:属性名 简称 :属性名
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://unpkg.com/vue@next"></script>
<style>
button{
padding: 10px;
background-color: antiquewhite;
width: 200px;
font-size: 40px;
font-weight: 900;
}
.dred{
width: 100px;
height: 100px;
background-color: red;
}
.drgreen{
width: 100px;
height: 100px;
background-color: green;
}
.dryellow{
width: 100px;
height: 100px;
background-color: yellow;
}
</style>
</head>
<body>
<div id="dv01">
<div :class="dvstyle"></div>
<button v-on:click="changeColor">改变颜色</button>
<button v-bind:disabled="isdj">买部手机13 pro max</button>
<button v-on:click="change">改变状态</button>
</div>
<script>
var i=0;
//定义数据对象
const params={
data(){//数据源
return {
isdj:true,
dvstyle:"dryellow"
}
},
methods:{//函数集
change(){
this.isdj=!this.isdj;
},
changeColor(){
i++;
var t=i%3;
if(t==0){
this.dvstyle="dred";
}else if(t==1){
this.dvstyle="drgreen";
}else{
this.dvstyle="dryellow";
}
}
}
}
//实现绑定和渲染
Vue.createApp(params).mount('#dv01');
</script>
</body>
</html>
2.事件绑定
使用 v-on 指令 (通常缩写为 @ 符号) 来监听 DOM 事件,并在触发事件时执行一些JavaScript
- 常用事件: click dblclick change keyup
- 在监听键盘事件时,Vue 允许为 v-on 或者 @ 在监听键盘事件时添加按键修饰符
- 事件处理程序中可以有多个方法,这些方法由逗号运算符分隔
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://unpkg.com/vue@next"></script>
<style>
.dv2{
width: 30px;
height: 30px;
background-color: red;
position: relative;
left: 10px;
top: 10px;
}
</style>
</head>
<body>
<div id="dv01">
<h1 :style="style1" @click="crandom">你的幸运数字:{{num}}</h1>
<div><input v-model="name" @change="showName"></div>
<h1 @dblclick="sj">双击6666</h1>
<input @keyup.down="xy" @keyup.up="sy" @keyup.left="zy" @keyup.right="yy" class="dv2" :style="dvposition"></input>
<button @click="xy(),yy()">动起来</button>
</div>
<script>
function randomHexColor() { //随机生成十六进制颜色
var hex = Math.floor(Math.random() * 16777216).toString(16); //生成ffffff以内16进制数
while (hex.length < 6) { //while循环判断hex位数,少于6位前面加0凑够6位
hex = '0' + hex;
}
return '#' + hex; //返回‘#'开头16进制颜色
}
//定义数据函数对象--Model
const params = {
data() {
return {
num: 0,
style1:"background-color:red",
name:"",
lnum:10,
tnum:10,
dvposition:"left: 10px;top:10px"
}
},
methods:{
crandom(){
this.num=Math.floor(Math.random()*10);
this.style1="background-color:"+randomHexColor();
},
showName(){
alert(this.name);
},
sj(){
this.name="双击成功:"+new Date().toLocaleTimeString()
},
sy(){
this.tnum-=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
},
xy(){
this.tnum+=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
},
zy(){
this.lnum-=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
},
yy(){
this.lnum+=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
}
}
}
//将数据函数和标签对应绑定
Vue.createApp(params).mount('#dv01');
</script>
</body>
</html>
3.双向绑定
用 v-model 指令在表单 、