一.代码详解
1.html部分
<div id="app">
<input type="text" placeholder="请输入第一个数" v-model.number="number1">
<select v-model="opt1">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number2"> <br />
答案:{{result}} <br />
<input type="text" placeholder="请输入第一个数" v-model.number="number3">
<select v-model="opt2">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number4"> <br />
答案:{{result1}} <br />
<input type="text" placeholder="请输入第一个数" v-model.number="number5" >
<select v-model="opt3" >
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number6" >
<button @click="change">结果</button> <br />
答案:{{result2}}
</div>
先使用一个div包括三个input-select-input结构的计算器。
注:placehoder是input中不输入内容时的提示文字,v-model.number可以使绑定的内容指定为数字。
2.script部分
a.计算属性
computed:{
result(){
if(this.opt1 == "+") {
return this.number1 + this.number2;
} else if(this.opt1 == "-") {
return this.number1 - this.number2;
} else if(this.opt1 == "*") {
return this.number1 * this.number2;
} else if(this.opt1 == "/"){
return this.number1 / this.number2;
}
}
},
使用if-else判断当运算符为+,-,×,÷时不同的运算情况。
b.侦听器
watch:{
number3(val){
if(this.opt2 == "+") {
this.result1 = val + this.number4;
} else if(this.opt2 == "-") {
this.result1 = val - this.number4;
} else if(this.opt2 == "*") {
this.result1 = val * this.number4;
} else if(this.opt2 == "/"){
this.result1 = val / this.number4;
}
},
number4(val){
if(this.opt2 == "+") {
this.result1 = this.number3 + val;
} else if(this.opt2 == "-") {
this.result1 = this.number3 - val;
} else if(this.opt2 == "*") {
this.result1 = this.number3 * val;
} else if(this.opt2 == "/"){
this.result1 = this.number3 / val;
}
},
sign1(val){
if(val == "+") {
this.result1 = this.number3 + this.number4;
} else if(val == "-") {
this.result1 = this.number3 - this.number4;
} else if(val == "*") {
this.result1 = this.number3 * this.number4;
} else if(val == "/"){
this.result1 = this.number3 / this.number4;
}
}
},
使用number3,number4和sign1侦听当两个数字和运算符变化时的不同情况。
c.方法
methods:{
change(){
if(this.opt3 == "+") {
this.result2 = this.number5 + this.number6;
} else if(this.opt3 == "-") {
this.result2 = this.number5 - this.number6;
} else if(this.opt3 == "*") {
this.result2 = this.number5 * this.number6;
} else if(this.opt3 == "/"){
this.result2 = this.number5 / this.number6;
}
}
},
使用change方法保存不同的运算符时的运算。
二.完整代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" placeholder="请输入第一个数" v-model.number="number1">
<select v-model="opt1">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number2"> <br />
答案:{{result}} <br />
<input type="text" placeholder="请输入第一个数" v-model.number="number3">
<select v-model="opt2">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number4"> <br />
答案:{{result1}} <br />
<input type="text" placeholder="请输入第一个数" v-model.number="number5" >
<select v-model="opt3" >
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number6" >
<button @click="change">结果</button> <br />
答案:{{result2}}
</div>
</body>
<script>
var vm = new Vue({
el: "#app",
data: {
number1:"",
number2:"",
opt1:"+",
number3:"",
number4:"",
opt2:"+",
result1:"",
number5:"",
number6:"",
opt3:"+",
result2:""
},
computed:{
result(){
if(this.opt1 == "+") {
return this.number1 + this.number2;
} else if(this.opt1 == "-") {
return this.number1 - this.number2;
} else if(this.opt1 == "*") {
return this.number1 * this.number2;
} else if(this.opt1 == "/"){
return this.number1 / this.number2;
}
}
},
watch:{
number3(val){
if(this.opt2 == "+") {
this.result1 = val + this.number4;
} else if(this.opt2 == "-") {
this.result1 = val - this.number4;
} else if(this.opt2 == "*") {
this.result1 = val * this.number4;
} else if(this.opt2 == "/"){
this.result1 = val / this.number4;
}
},
number4(val){
if(this.opt2 == "+") {
this.result1 = this.number3 + val;
} else if(this.opt2 == "-") {
this.result1 = this.number3 - val;
} else if(this.opt2 == "*") {
this.result1 = this.number3 * val;
} else if(this.opt2 == "/"){
this.result1 = this.number3 / val;
}
},
sign1(val){
if(val == "+") {
this.result1 = this.number3 + this.number4;
} else if(val == "-") {
this.result1 = this.number3 - this.number4;
} else if(val == "*") {
this.result1 = this.number3 * this.number4;
} else if(val == "/"){
this.result1 = this.number3 / this.number4;
}
}
},
methods:{
change(){
if(this.opt3 == "+") {
this.result2 = this.number5 + this.number6;
} else if(this.opt3 == "-") {
this.result2 = this.number5 - this.number6;
} else if(this.opt3 == "*") {
this.result2 = this.number5 * this.number6;
} else if(this.opt3 == "/"){
this.result2 = this.number5 / this.number6;
}
}
},
})
</script>
</html>