关于watch方法

关于watch方法

为什么operation放在methods下面不会报错,放在watch下面就会报错




<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>计算器</title>

</head>

<body>

<div id="app">

<input type="text" v-model.number="num1">

<select v-model="value">

<option value="add">+</option>

<option value="sub">-</option>

<option value="mul">*</option>

<option value="div">/</option>

</select>

<input type="text" v-model.number="num2">

<button @click="operation">=</button>

<input type="text" v-model="result">

</div>

</body>

<script type="text/javascript" src="vue.js"></script>

<script type="text/javascript">

var vm = new Vue ({

el:"#app",

data:{

num1:"",

value:"+",

num2:"",

result:""


},

watch:{

operation:function(){

switch(this.value) {

case "add":this.result=this.num1+this.num2;

break;

case "sub":this.result=this.num1-this.num2;

break;

case "mul":this.result=this.num1*this.num2;

break;

case "div":this.result=this.num1/this.num2;

break;


}


}

}


})

</script>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,watch用来监听数据的改变,当监听的数据值变了,就会执行watch。是不能在watch中定义方法,直接调用的。

建议:在methods中定义方法,在watch中监听,当符号发生改变,就会执行operation方法。例如:

http://img1.sycdn.imooc.com//climg/5ed211130977752d08700626.jpg

练习的效果图中下拉菜单默认显示+

http://img1.sycdn.imooc.com//climg/5ed21199096d401305080087.jpg

同学实现的效果中没有

http://img1.sycdn.imooc.com//climg/5ed211b80984f1e006710053.jpg

建议添加默认值,如下:

http://img1.sycdn.imooc.com//climg/5ed211da09d2c44f02180072.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师