v-on:绑定事件监听器&v-model
v-on 就是监听事件,可以用v-on指令监听DOM事件来触发一些javascript代码。
v-on
一、使用绑定事件监听器,编写一个加分减分的程序。
效果图
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>v-on</title>
<script type="text/javascript" src="../assets/js/vue.js"></script>
</head>
<body>
<h1>v-on</h1>
<hr>
<div id="app">
本场比赛得分:{{score}}
<button v-on:click="up">加分</button>
<button @click="down">减分</button>
<input type="text" v-on:keyup.enter="onEnter" v-model="score2">
</div>
<script type="text/javascript">
var app = new Vue({
el:'#app',
data:{
score: 0,
score2: 1
},
methods:{
up:function(){
this.score++;
},
down:function(){
this.score--;
},
onEnter:function(){
this.score=this.score + parseInt(this.score2);
}
}
});
</script>
</body>
</html>
v-on还有一种简单的恶写法,就是用@代替
<button < @click="jianfen">减分</button>
除了可以绑定click之外,还可以绑定其他事件,比如键盘的回车键
<input type="text" v-on:keyup.enter="onEnter" v-model="secondCount">
onEnter:function(){
this.count=this.count+parseInt(this.secondCount);
}
因为文本框的数组会默认编程字符串,一次你需要用到parseInt()方法进行转换
v-model:
1、先看一个简单的双向数据绑定
HTML:
<p>原始文本信息:{{message}}</p>
<h3>文本框</h3>
<p>v-model:<input type="text" v-model="message"></p>
JS:
var app = new Vue({
el:'#app',
data:{
message: 'sdsd'
}
});
2.修饰符
.lazy:取代imput监听change事件这里写代码片
.number:输入字符串转成数字
.trim:输入去掉空格
<p>v-model.lazy:<input type="text" v-model.lazy="message"></p>
<p>v-model.number<input type="text" v-model.number="message"></p>
<p>v-model.trim<input type="text" v-model.trim="message"></p>
3.文本域加入数据绑定
<textarea cols="30" rows="10" v-model="message"></textarea>
4.多选按钮绑定一个值
<h3>多选框绑定一个值</h3>
<input type="checkbox" id="isTrue" v-model="isTrue" />
<label for="isTrue">{{isTrue}}</label>
5.多选按钮绑定一个数组
<hr>
<p>
<input type="checkbox" id="cheny" value="cheny" v-model="web_names" />
<label for="isTrue">cheny</label>
<input type="checkbox" id="boom" value="boom" v-model="web_names" />
<label for="isTrue">boom</label>
<input type="checkbox" id="chendayong" value="chendayong" v-model="web_names" />
<label for="isTrue">chendayong</label>
</p>
<p>{{web_names}}</p>
var app = new Vue({
el:'#app',
data:{
isTrue:true,
web_names:[]
}
});
6.单选按钮绑定数据
<h3>单选按钮绑定</h3>
<input type="radio" id="one" value="男" v-model="sex">
<label for="one">男</label>
<input type="radio" id="two" value="女" v-model="sex">
<label for="one">女</label>
<p>{{sex}}</p>
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>v-model</title>
<script type="text/javascript" src="../assets/js/vue.js"></script>
</head>
<body>
<h1>v-model</h1>
<hr>
<div id="app">
<p>原始文本信息:{{message}}</p>
<h3>文本框</h3>
<p>v-model:<input type="text" v-model="message"></p>
<p>v-model.lazy:<input type="text" v-model.lazy="message"></p>
<p>v-model.number<input type="text" v-model.number="message"></p>
<p>v-model.trim<input type="text" v-model.trim="message"></p>
<hr>
<h3>文本域</h3>
<textarea cols="30" rows="10" v-model="message"></textarea>
<hr>
<h3>多选框绑定数组</h3>
<input type="checkbox" id="isTrue" v-model="isTrue" />
<label for="isTrue">{{isTrue}}</label>
<hr>
<p>
<input type="checkbox" id="cheny" value="cheny" v-model="web_names" />
<label for="isTrue">cheny</label>
<input type="checkbox" id="boom" value="boom" v-model="web_names" />
<label for="isTrue">boom</label>
<input type="checkbox" id="chendayong" value="chendayong" v-model="web_names" />
<label for="isTrue">chendayong</label>
</p>
<p>{{web_names}}</p>
<hr>
<h3>单选框的绑定</h3>
<p>
<input type="radio" id="one" value="男" v-model="sex">
<label for="one">男</label>
<input type="radio" id="two" value="女" v-model="sex">
<label for="two">女</label>
<p>你选择的性别是{{sex}}</p>
</p>
</div>
<script type="text/javascript">
var app = new Vue({
el:'#app',
data:{
message: 'sdsd',
isTrue:true,
web_names:[],
sex:'男'
}
});
</script>
</body>
</html>