vue使用方法,侦听器,计算属性三种方式实现简易计算器
今天我们用vue中方法,计算属性,还有监听器来完成一个简易的小型计算器
一. 代码实现效果

二.代码实现
1.创建一个web项目,导入本地js文件实例化vue对象并挂载DOM节点

2.方法实现计算器
框架分析:
1.创建输入框用来输入数据,创建按钮计算结果
2.v-model属性使用,利用v-model动态绑定输入框获取用户输入的数字和符号
3.方法思路,通过v-model获取到用户符号用if-else或者switch语句进行计算

3.计算属性实现计算器
计算属性和方法的实现类型基本一样,将值返回给res后输出

4.监听器实现计算器
创建第一个监听器用来监听用户更改的第一个数字并定义val接收改变的值
创建第二个监听器用来监听用户更改的第二个数字并定义val接收改变的值
创建符号监听器,满足用户切换操作运算符需求

三.完整代码
方法实现
<body>
<div id="app">
<input type="text" placeholder="请输入第一个数" v-model.number="number3" />
<select v-model="opt1" >
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number4" />
<button @click="change">计算</button>{{finaly}}
</div>
</body>
<script>
var vm = new Vue({
el:"#app",
data:{
number1: "",
number2: "",
opt1:"+",
finaly:""
},
methods:{
change(){
if(this.opt1 == "+") {
this.finaly = this.number3 + this.number4;
} else if(this.opt1 == "-") {
this.finaly = this.number3 - this.number4;
} else if(this.opt1 == "*") {
this.finaly = this.number3 * this.number4;
} else if(this.opt1 == "/"){
this.finaly = this.number3 / this.number4;
}
}
}
})
</script>
计算属性实现
<body>
<div id="app">
<input type="text" placeholder="请输入第一个数" v-model.number="number1" />
<select v-model="opt">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number2" />
{{number1}}{{opt}}{{number2}}<br />
结果为:{{res}}<br /><br />
</div>
</body>
<script>
var vm = new Vue({
el:"#app",
data:{
number1: "",
number2: "",
opt:"+",
},
computed:{
res(){
if(this.opt == "+") {
return this.number1 + this.number2;
} else if(this.opt == "-") {
return this.number1 - this.number2;
} else if(this.opt == "*") {
return this.number1 * this.number2;
} else if(this.opt == "/"){
return this.number1 / this.number2;
}
}
}
})
</script>
监听器实现
<body>
<div id="app">
<input type="text" placeholder="请输入第一个数" v-model.number="number5" />
<select v-model="opt2">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" placeholder="请输入第二个数" v-model.number="number6" />
<br />
结果为:{{result}}<br /><br />
</div>
</body>
<script>
var vm = new Vue({
el: "#app",
data: {
number5: "",
number6: "",
opt2: "+",
result: ""
},
watch: {
number5(val) {
if (this.opt2 == "+") {
this.result = val + this.number6;
} else if (this.opt2 == "-") {
this.result = val - this.number6;
} else if (this.opt2 == "*") {
this.result = val * this.number6;
} else if (this.opt2 == "/") {
this.result = val / this.number6;
}
},
number6(val) {
if (this.opt2 == "+") {
this.result = this.number5 + val;
} else if (this.opt2 == "-") {
this.result = this.number5 - val;
} else if (this.opt2 == "*") {
this.result = this.number5 * val;
} else if (this.opt2 == "/") {
this.result = this.number5 / val;
}
},
opt2(val) {
if (val == "+") {
this.result = this.number5 + this.number6;
} else if (val == "-") {
this.result = this.number5 - this.number6;
} else if (val == "*") {
this.result = this.number5 * this.number6;
} else if (val == "/") {
this.result = this.number5 / this.number6;
}
}
}
浙公网安备 33010602011771号