From 94e9820d2e65a637222ec529b052ab7d7d732ded Mon Sep 17 00:00:00 2001 From: qiang Date: Tue, 18 Aug 2020 15:04:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=20v-for=20=E5=B5=8C=E5=A5=97=20v-if=20=E5=86=85?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=88=B0=E5=85=A8=E5=B1=80=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=BD=93=E5=89=8D=E4=BD=9C=E7=94=A8=E5=9F=9F?= =?UTF-8?q?=E5=86=85=E6=95=B0=E6=8D=AE=E6=97=B6=E6=8A=A5=E9=94=99=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20question/105010?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uni-template-compiler/__tests__/compiler-extra.spec.js | 5 +++++ .../uni-template-compiler/lib/script/traverse/member-expr.js | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/uni-template-compiler/__tests__/compiler-extra.spec.js b/packages/uni-template-compiler/__tests__/compiler-extra.spec.js index dc0947f3e..dfbb7be2c 100644 --- a/packages/uni-template-compiler/__tests__/compiler-extra.spec.js +++ b/packages/uni-template-compiler/__tests__/compiler-extra.spec.js @@ -722,5 +722,10 @@ describe('mp:compiler-extra', () => { '{{item.m2}}', 'with(this){var l0=__map(list,function(item,index){var $orig=__get_orig(item);var m0=test(item.id);var m1=m0?test(item.type):null;var m2=m0&&m1?test("item"):null;return{$orig:$orig,m0:m0,m1:m1,m2:m2}});$mp.data=Object.assign({},{$root:{l0:l0}})}' ) + assertCodegen( + '{{test(item.list)}}', + '{{item.m0}}', + 'with(this){var l0=__map(list,function(item,index){var $orig=__get_orig(item);var g0=Object.values(item.list);var m0=g0.length?test(item.list):null;return{$orig:$orig,g0:g0,m0:m0}});$mp.data=Object.assign({},{$root:{l0:l0}})}' + ) }) }) diff --git a/packages/uni-template-compiler/lib/script/traverse/member-expr.js b/packages/uni-template-compiler/lib/script/traverse/member-expr.js index 3a59a6d84..70aba6c23 100644 --- a/packages/uni-template-compiler/lib/script/traverse/member-expr.js +++ b/packages/uni-template-compiler/lib/script/traverse/member-expr.js @@ -4,7 +4,8 @@ const traverse = require('@babel/traverse').default const { VAR_ROOT, IDENTIFIER_METHOD, - IDENTIFIER_FILTER + IDENTIFIER_FILTER, + IDENTIFIER_GLOBAL } = require('../../constants') function isMatch (name, forItem, forIndex) { @@ -69,7 +70,7 @@ function findTest (path, state) { const objectName = node.object.name const property = node.property const propertyName = property.name - if (objectName === VAR_ROOT || (names.includes(objectName) && (propertyName === IDENTIFIER_METHOD || propertyName === IDENTIFIER_FILTER))) { + if (objectName === VAR_ROOT || (names.includes(objectName) && (propertyName === IDENTIFIER_METHOD || propertyName === IDENTIFIER_FILTER || propertyName === IDENTIFIER_GLOBAL))) { let property traverse(testOrig, { noScope: true, -- GitLab