公司项目有IE9的需求,今天一测试发现好多bug。
第一个问题就是:有一个输入框,watch这个输入框里的值,当值匹配到手机格式时相向后台发送请求,执行一系列操作。代码长这样:
实际问题就是监听不到 ‘cashierData.mobile’(对象里的属性)了,但是可以监听到对象,
(是不是觉得IE9这货很神奇??对象可以但是对象的属性不可以!我也很绝望啊!)
这里提个题外话,当watch监听的是一个对象里的属性时要用单引号引起来,像上面代码那样,如果是个单纯的对象的话就不需要单引号。
解决方法如下:
vue监听input输入框的change事件,然后再事件里执行请求就可以:
在输入框中增加一个v-on:input方法
<el-input v-model="mobile" v-on:input="handlerMobile(mobile)"></el-input>
需要注意的是,在这里不能使用@input
@change
@oninput
等指令,无法生效的。
接下来只需要在methods中,加上刚刚写的handlerMobile
方法,里面的ajax内容还是一样,不过换了一种监听方式而已,代码如下:
handlerMobile: function(val){if ((/^1\d{10}$/.test(val)) && val) {this.$http.post('/cashier/ajax-valid-user', {mobile: val}, {headers: {'Content-Type': 'application/x-www-form-urlencoded'},emulateJSON: true}).then(function (response) {var that = this;if (response.data.code == -1) {this.$message.error('无此会员号,不可进行购买操作');vue.disableChose = true;} else {vue.disableChose = false;return true;}}, function (response) {alert('请求失败处理'); //失败处理});} else {vue.disableChose = true;return false;}},
如果觉得《Vue.js - watch对象的属性在IE9下失效》对你有帮助,请点赞、收藏,并留下你的观点哦!