1、用表达式实现计算:
用v-if来绑定输入框和结果
用v-model双向绑定输入和结果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<!-- 这里得type如果写number,后面的绑定就不用加上“.number” -->
<input type="text" v-model.number="num1"/>
<select v-model="opt">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" v-model.number="num2" />
<br />
<div>
<p v-if="opt=='+'">结果:{{num1+num2}}</p>
<p v-if="opt=='-'">结果:{{num1-num2}}</p>
<p v-if="opt=='*'">结果:{{num1*num2}}</p>
<p v-if="opt=='/'">结果:{{num1/num2}}</p>
</div>
</div>
</body>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
num1:0,
num2:0,
opt:"*"
}
})
</script>
</html>
2、用计算属性实现计算机(computed):
计算属性根据选择的操作符将两个数字进行计算,并将结果返回给HTML中的输出元素
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>计算属性</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<input id="input" type="text" v-model="n1"/>
<select v-model="opt">
<option value ="+">+</option>
<option value ="-">-</option>
<option value ="*">*</option>
<option value ="/">/</option>
</select>
<input type="text" v-model="n2"/>
<br />
<input type="text" v-model="result"/>
</div>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
n1:0,
n2:0,
opt:'+'
},
// 计算属性必须定义在computed节点中
computed:{
result(){
switch (this.opt) {
case '+':
return Number(this.n1) + Number(this.n2);
break;
case '-':
return Number(this.n1) - Number(this.n2);
break;
case '*':
return Number(this.n1) * Number(this.n2);
break;
case '/':
return Number(this.n1) / Number(this.n2);
break;
}
}
}
})
</script>
</body>
</html>
3、methods:
使用v-model进行绑定,number改变数字类型.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>methods</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model.number="num1">
<select v-model="opt">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" v-model.number="num2">
<br />
<button @click="button1">计算</button>
<input type="text" v-model.number="num3">
</div>
</body>
<script>
var vm = new Vue({
el:"#app",
data:{
num1:0,
num2:0,
num3:0,
opt:'+',
},
methods:{
button1(){
switch(this.opt){
case '+':
this.num3=this.num1 + this.num2;
break;
case '-':
this.num3=this.num1 - this.num2;
break;
case '*':
this.num3=this.num1 * this.num2;
break;
case '/':
this.num3=this.num1 / this.num2;
break;
}
}
}
});
</script>
</html>
4、监听器实现计算机(watch):
用Vue.js的watch属性来监视数据的变化,每当这些属性中的任何一个发生变化时,监视器函数将调用方法来重新计算结果,并更新数据属性中的值。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>watch</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<input id="input" type="text" v-model="n1" />
<select v-model="opt">
<option value ="+">+</option>
<option value ="-">-</option>
<option value ="*">*</option>
<option value ="/">/</option>
</select>
<input type="text" v-model="n2" />
<input type="text" v-model="result" />
</div>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
n1:0,
n2:0,
result:null,
opt:'+'
},
methods:{
watch1(){
switch (this.opt) {
case '+':
this.result = Number(this.n1) + Number(this.n2);
break;
case '-':
this.result = Number(this.n1) - Number(this.n2);
break;
case '*':
this.result = Number(this.n1) * Number(this.n2);
break;
case '/':
this.result = Number(this.n1) / Number(this.n2);
break;
}
}
},
watch:{
n1:function(){
this.watch1()
},
n2:function(){
this.watch1()
},
opt:function(){
this.watch1()
}
},
created(){
this.watch1()
}
})
</script>
</body>
</html>