首先实例化vue对象,然后两个<input>表单控件来存放我们的两个数字。用placeholder提示文本提示用户输入数字,用v-model来实现数据的双向绑定
<!DOCTYPE html>
<html>
<head>
<script src="js/vue.js"></script>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="app">
<input type="text" placeholder="请输入第一个数字" v-model.number="num1"/>
<select v-model="opt" >
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数字" v-model.number="num2"/>
<button @click="change" >计算</button><br/>
结果:{{result}}<br/>
</div>
</body>
<script>
var vm=new Vue({
el:"#app",
data:{
num1:'',
num2:'',
opt:"+",
result:""
},
第一种方法(利用methods)
methods: {
change() {
if( this.opt=="+"){
this.result=this.num1+this.num2;
}
if( this.opt=="-"){
this.result=this.num1-this.num2;
}
if( this.opt=="*"){
this.result=this.num1*this.num2;
}
if( this.opt=="/"){
this.result=this.num1/this.num2;
}
}
},
第一种方法最终代码
<!DOCTYPE html> <html> <head> <script src="js/vue.js"></script> <meta charset="utf-8" /> <title></title> </head> <body> <div id="app"> <input type="text" placeholder="请输入第一个数字" v-model.number="num1"/> <select v-model="opt" > <option>+</option> <option>-</option> <option>*</option> <option>/</option> </select> <input type="text" placeholder="请输入第二个数字" v-model.number="num2"/> <button @click="change" >计算</button><br/> 结果:{{result}}<br/> </div> </body> <script> var vm=new Vue({ el:"#app", data:{ num1:'', num2:'', opt:"+", result:"" }, methods: { change() { if( this.opt=="+"){ this.result=this.num1+this.num2; } if( this.opt=="-"){ this.result=this.num1-this.num2; } if( this.opt=="*"){ this.result=this.num1*this.num2; } if( this.opt=="/"){ this.result=this.num1/this.num2; } } }, }) </script> </html>
第二种方法(利用watch监听)
watch:{
num1:function(val){
if(this.opt=="+"){
this.result=val+this.num2;
}
if(this.opt=="-"){
this.result=val-this.num2;
}
if(this.opt=="*"){
this.result=val*this.num2;
}
if(this.opt=="/"){
this.result=val/this.num2;
}
},
num2:function(val){
if(this.opt=="+"){
this.result=this.num1+val;
}
if(this.opt=="-"){
this.result=this.num1-val;
}
if(this.opt=="*"){
this.result=this.num1*val;
}
if(this.opt=="/"){
this.result=this.num1/val;
}
},
opt:function(val){
if(val=="+"){
this.result=thi.num1+this.num2;
}
if(val=="-"){
this.result=thi.num1-this.num2;
}
if(val=="*"){
this.result=thi.num1*this.num2;
}
if(val=="/"){
this.result=thi.num1/this.num2;
}
}
},
第二种最终代码
<!DOCTYPE html> <html> <head> <script src="js/vue.js"></script> <meta charset="utf-8"> <title></title> </head> <body> <div id="app"> <input type="text" placeholder="请输入第一个数字" v-model.number="num1"/> <select v-model="opt" > <option>+</option> <option>-</option> <option>*</option> <option>/</option> </select> <input type="text" placeholder="请输入第二个数字" v-model.number="num2"/><br> 结果:{{result}} </div> </body> <script> var vm=new Vue({ el:"#app", data:{ num1:'', num2:'', opt:"+", result:"" }, watch:{ num1:function(val){ if(this.opt=="+"){ this.result=val+this.num2; } if(this.opt=="-"){ this.result=val-this.num2; } if(this.opt=="*"){ this.result=val*this.num2; } if(this.opt=="/"){ this.result=val/this.num2; } }, num2:function(val){ if(this.opt=="+"){ this.result=this.num1+val; } if(this.opt=="-"){ this.result=this.num1-val; } if(this.opt=="*"){ this.result=this.num1*val; } if(this.opt=="/"){ this.result=this.num1/val; } }, opt:function(val){ if(val=="+"){ this.result=thi.num1+this.num2; } if(val=="-"){ this.result=thi.num1-this.num2; } if(val=="*"){ this.result=thi.num1*this.num2; } if(val=="/"){ this.result=thi.num1/this.num2; } } }, }) </script> </html>
第三种(利用computed计算方法)
computed: {
result(){
if(this.opt=="+"){
return this.num1+this.num2;
}else if(this.opt=="-"){
return this.num1-this.num2;
} else if(this.opt=="*"){
return this.num1*this.num2;
}else if(this.opt=="/"){
return this.num1/this.num2;
}
}
}
第三种最终代码
<!DOCTYPE html> <html> <head> <script src="js/vue.js"></script> <meta charset="utf-8"> <title></title> </head> <body> <div id="app"> <input type="text" placeholder="请输入第一个数字" v-model.number="num1" /> <select v-model="opt" > <option>+</option> <option>-</option> <option>*</option> <option>/</option> </select> <input type="text" placeholder="请输入第二个数字" v-model.number="num2" /> 结果:{{result}} </div> </body> <script> var vm=new Vue({ el:"#app", data:{ num1:'', num2:'', opt:"+", }, computed: { result(){ if(this.opt=="+"){ return this.num1+this.num2; }else if(this.opt=="-"){ return this.num1-this.num2; } else if(this.opt=="*"){ return this.num1*this.num2; }else if(this.opt=="/"){ return this.num1/this.num2; } } } }) </script> </html>
运行效果(当输入数字后点击不同的运算符时将进行相应的运算,并将结果显示出来)