自动聚焦爬坑
需求:在扫码pda扫码然后每次扫完需要自动input
爬坑:一开始,我设置focus,在浏览器调试可以,但打包成安卓运行在5.1就会失效。经验就是:
<input class="uni-input" @confirm="onKeyInput"
:focus='setFocus' placeholder="请扫描条码" v-model="inputValue" disable=true @blur='resetFocus' @focus="addStyle" />
export default {
components: {
mpvuePicker
},
data() {
return {
setFocus: false,
};
},
methods: {
resetFocus() {
this.setFocus = false;
}
}}
在失去焦点的时候 一定要把focus设置为 false,然后在别的事件触发完,再设置为true
postProductInfo: function(product = {}) {
let _data = product;
uni.request({
url: url,
method: 'POST',
data: _data,
success: (res) => {
uni.showToast({
title: res.data.msg,
duration: 1000
});
this.stockTimeNum()
setTimeout(() => {
this.setFocus = true
}, 400)
}
})
},
比如这里,坑就是之前我之前已经在某个地方写了this.setFocus = true,页面确实聚焦了,但是在有toast,下面的列表举荐渲染的时候,页面的input会闪一下,导致重新失去焦点,这时候需要自己找下在哪是最后一次渲染完 然后重新聚焦。
安卓5.1双向绑定失效
我在安卓8.0没问题 但是在pda扫码机器上 在动态刷新已扫码数量的时候,会不更新。控制台打印信息为:请求成功,但是无数据。不敢复现bug截图了。
解决办法:
data() {
return {
pickerText: '',
scope: ''
};
},
methods: {
onConfirm(e) {
this.pickerText = e
this.scope = this.pickerText.value[0]
this.$nextTick(function() {
this.stockTimeNum() // 这里的请求方法我直接直接使用this.pickerText.value[0] 请求传餐,会在5.1失效。。。爬坑时间半天。
this.setFocus = true
})
}
}
ps:爬了一天T.T。感谢uniapp团队。
9 个评论
要回复文章请先登录或注册
Miaowj
1***@163.com
4***@qq.com
w***@163.com
1***@qq.com (作者)
Lspring
d***@163.com
你咋骚的一匹
UchihaSasuke