提交 6b1c2fbd 编写于 作者: d-u-a's avatar d-u-a

fix(mp): mp-alipay uni.createSelectorQuery fields 报错问题,目前与app/微信还是有差异,一次只能传入1个参数,多个参数需要再次select

上级 d80ed2c2
import {
isFn,
hasOwn
} from 'uni-shared'
......@@ -32,3 +33,58 @@ export function startGyroscope (params) {
errMsg: 'startGyroscope:ok'
})
}
function createExecCallback (execCallback) {
return function wrapperExecCallback (res) {
this.actions.forEach((action, index) => {
(action._$callbacks || []).forEach(callback => {
callback(res[index])
})
})
execCallback(res)
}
}
function addCallback (callback) {
if (isFn(callback)) {
const action = this.actions[this.actions.length - 1]
if (action) {
(action._$callbacks || (action._$callbacks = [])).push(callback)
}
}
}
export function createSelectorQuery () {
const query = my.createSelectorQuery()
const oldExec = query.exec
const oldScrollOffset = query.scrollOffset
const oldBoundingClientRect = query.boundingClientRect
query.exec = function exec (callback) {
return oldExec.call(this, createExecCallback(callback).bind(this))
}
query.scrollOffset = function scrollOffset (callback) {
const ret = oldScrollOffset.call(this)
addCallback.call(this, callback)
return ret
}
query.boundingClientRect = function boundingClientRect (callback) {
const ret = oldBoundingClientRect.call(this)
addCallback.call(this, callback)
return ret
}
if (!query.fields) {
query.fields = function ({ rect, size, scrollOffset } = {}, callback) {
if (rect || size) {
this.boundingClientRect()
}
if (scrollOffset) {
this.scrollOffset()
}
addCallback.call(this, callback)
return this
}
}
return query
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册