From 6b1c2fbdd5dbb347fe47766008b4d9054ac7828e Mon Sep 17 00:00:00 2001 From: handongxun Date: Thu, 13 Jun 2019 15:08:34 +0800 Subject: [PATCH] =?UTF-8?q?fix(mp):=20mp-alipay=20uni.createSelectorQuery?= =?UTF-8?q?=20fields=20=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E7=9B=AE=E5=89=8D=E4=B8=8Eapp/=E5=BE=AE=E4=BF=A1=E8=BF=98?= =?UTF-8?q?=E6=98=AF=E6=9C=89=E5=B7=AE=E5=BC=82,=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E5=8F=AA=E8=83=BD=E4=BC=A0=E5=85=A51=E4=B8=AA=E5=8F=82?= =?UTF-8?q?=E6=95=B0,=E5=A4=9A=E4=B8=AA=E5=8F=82=E6=95=B0=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=86=8D=E6=AC=A1select?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/platforms/mp-alipay/service/api/index.js | 56 ++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/platforms/mp-alipay/service/api/index.js b/src/platforms/mp-alipay/service/api/index.js index bef4c2478..ddd302f3e 100644 --- a/src/platforms/mp-alipay/service/api/index.js +++ b/src/platforms/mp-alipay/service/api/index.js @@ -1,4 +1,5 @@ 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 +} -- GitLab