提交 4a6d17ab 编写于 作者: fxy060608's avatar fxy060608

fix(mp-alipay): getPhoneNumber (#3116)

上级 dda18d05
...@@ -6,7 +6,14 @@ describe('mp-alipay: transform v-on', () => { ...@@ -6,7 +6,14 @@ describe('mp-alipay: transform v-on', () => {
`<button open-type='getPhoneNumber' @getphonenumber="getPhoneNumber">获取手机号</button>`, `<button open-type='getPhoneNumber' @getphonenumber="getPhoneNumber">获取手机号</button>`,
`<button open-type="getAuthorize" scope="phoneNumber" onGetAuthorize="{{a}}" onError="{{b}}">获取手机号</button>`, `<button open-type="getAuthorize" scope="phoneNumber" onGetAuthorize="{{a}}" onError="{{b}}">获取手机号</button>`,
`(_ctx, _cache) => { `(_ctx, _cache) => {
return { a: _o($event => _ctx.$onAliGetAuthorize('getPhoneNumber', $event)), b: _o($event => _ctx.$onAliAuthError('getPhoneNumber', $event)) } return { a: _o($event => _ctx.$onAliGetAuthorize(_ctx.getPhoneNumber, $event)), b: _o($event => _ctx.$onAliAuthError(_ctx.getPhoneNumber, $event)) }
}`
)
assert(
`<button open-type='getPhoneNumber' @getphonenumber="getPhoneNumber($event)">获取手机号</button>`,
`<button open-type="getAuthorize" scope="phoneNumber" onGetAuthorize="{{a}}" onError="{{b}}">获取手机号</button>`,
`(_ctx, _cache) => {
return { a: _o($event => _ctx.$onAliGetAuthorize($event => { _ctx.getPhoneNumber($event); }, $event)), b: _o($event => _ctx.$onAliAuthError($event => { _ctx.getPhoneNumber($event); }, $event)) }
}` }`
) )
}) })
......
...@@ -120,8 +120,11 @@ function transformOpenType(node) { ...@@ -120,8 +120,11 @@ function transformOpenType(node) {
return; return;
} }
props.splice(getPhoneNumberPropIndex, 1); props.splice(getPhoneNumberPropIndex, 1);
props.push(uniCliShared.createOnDirectiveNode('getAuthorize', `$onAliGetAuthorize('${getPhoneNumberMethodName}',$event)`)); const method = compilerCore.isSimpleIdentifier(getPhoneNumberMethodName)
props.push(uniCliShared.createOnDirectiveNode('error', `$onAliAuthError('${getPhoneNumberMethodName}',$event)`)); ? getPhoneNumberMethodName
: `$event => { ${getPhoneNumberMethodName} }`;
props.push(uniCliShared.createOnDirectiveNode('getAuthorize', `$onAliGetAuthorize(${method},$event)`));
props.push(uniCliShared.createOnDirectiveNode('error', `$onAliAuthError(${method},$event)`));
} }
const projectConfigFilename = 'mini.project.json'; const projectConfigFilename = 'mini.project.json';
......
...@@ -628,8 +628,8 @@ function initCreatePluginApp(parseAppOptions) { ...@@ -628,8 +628,8 @@ function initCreatePluginApp(parseAppOptions) {
function onAliAuthError(method, $event) { function onAliAuthError(method, $event) {
$event.type = 'getphonenumber'; $event.type = 'getphonenumber';
$event.detail.errMsg = $event.detail.errMsg =
'getPhoneNumber:fail Error: ' + 'getPhoneNumber:fail Error: ' + $event.detail.errorMessage;
$event.detail.errorMessage(this)[method]($event); method($event);
} }
function onAliGetAuthorize(method, $event) { function onAliGetAuthorize(method, $event) {
my.getPhoneNumber({ my.getPhoneNumber({
...@@ -639,12 +639,12 @@ function onAliGetAuthorize(method, $event) { ...@@ -639,12 +639,12 @@ function onAliGetAuthorize(method, $event) {
$event.detail.errMsg = 'getPhoneNumber:ok'; $event.detail.errMsg = 'getPhoneNumber:ok';
$event.detail.encryptedData = response.response; $event.detail.encryptedData = response.response;
$event.detail.sign = response.sign; $event.detail.sign = response.sign;
this[method]($event); method($event);
}, },
fail: (res) => { fail: (res) => {
$event.type = 'getphonenumber'; $event.type = 'getphonenumber';
$event.detail.errMsg = 'getPhoneNumber:fail Error: ' + JSON.stringify(res); $event.detail.errMsg = 'getPhoneNumber:fail Error: ' + JSON.stringify(res);
this[method]($event); method($event);
}, },
}); });
} }
......
import { import {
findProp, findProp,
isSimpleIdentifier,
NodeTypes, NodeTypes,
RootNode, RootNode,
TemplateChildNode, TemplateChildNode,
...@@ -49,16 +50,16 @@ export function transformOpenType(node: RootNode | TemplateChildNode) { ...@@ -49,16 +50,16 @@ export function transformOpenType(node: RootNode | TemplateChildNode) {
return return
} }
props.splice(getPhoneNumberPropIndex, 1) props.splice(getPhoneNumberPropIndex, 1)
const method = isSimpleIdentifier(getPhoneNumberMethodName)
? getPhoneNumberMethodName
: `$event => { ${getPhoneNumberMethodName} }`
props.push( props.push(
createOnDirectiveNode( createOnDirectiveNode(
'getAuthorize', 'getAuthorize',
`$onAliGetAuthorize('${getPhoneNumberMethodName}',$event)` `$onAliGetAuthorize(${method},$event)`
) )
) )
props.push( props.push(
createOnDirectiveNode( createOnDirectiveNode('error', `$onAliAuthError(${method},$event)`)
'error',
`$onAliAuthError('${getPhoneNumberMethodName}',$event)`
)
) )
} }
...@@ -4,18 +4,18 @@ import { MiniProgramAppOptions } from '@dcloudio/uni-mp-core' ...@@ -4,18 +4,18 @@ import { MiniProgramAppOptions } from '@dcloudio/uni-mp-core'
function onAliAuthError( function onAliAuthError(
this: ComponentPublicInstance, this: ComponentPublicInstance,
method: string, method: ($event: unknown) => void,
$event: any $event: any
) { ) {
$event.type = 'getphonenumber' $event.type = 'getphonenumber'
$event.detail.errMsg = $event.detail.errMsg =
'getPhoneNumber:fail Error: ' + 'getPhoneNumber:fail Error: ' + $event.detail.errorMessage
$event.detail.errorMessage(this as any)[method]($event) method($event)
} }
function onAliGetAuthorize( function onAliGetAuthorize(
this: ComponentPublicInstance, this: ComponentPublicInstance,
method: string, method: ($event: unknown) => void,
$event: any $event: any
) { ) {
my.getPhoneNumber({ my.getPhoneNumber({
...@@ -25,12 +25,12 @@ function onAliGetAuthorize( ...@@ -25,12 +25,12 @@ function onAliGetAuthorize(
$event.detail.errMsg = 'getPhoneNumber:ok' $event.detail.errMsg = 'getPhoneNumber:ok'
$event.detail.encryptedData = response.response $event.detail.encryptedData = response.response
$event.detail.sign = response.sign $event.detail.sign = response.sign
;(this as any)[method]($event) method($event)
}, },
fail: (res) => { fail: (res) => {
$event.type = 'getphonenumber' $event.type = 'getphonenumber'
$event.detail.errMsg = 'getPhoneNumber:fail Error: ' + JSON.stringify(res) $event.detail.errMsg = 'getPhoneNumber:fail Error: ' + JSON.stringify(res)
;(this as any)[method]($event) method($event)
}, },
}) })
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册