From 82ad885413a5dfe3f6045a6b352e297d7d48e67a Mon Sep 17 00:00:00 2001 From: qiang Date: Sat, 30 Jan 2021 17:05:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(mp):=20=E4=BF=AE=E5=A4=8D=20v-for=20?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF=20wxs=20=E6=A8=A1=E5=9D=97=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98=20question/115658?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__tests__/compiler-extra.spec.js | 11 +++++++++++ .../lib/script/traverse/render-list.js | 5 +++-- 2 files changed, 14 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 8cee04c31..0e048c608 100644 --- a/packages/uni-template-compiler/__tests__/compiler-extra.spec.js +++ b/packages/uni-template-compiler/__tests__/compiler-extra.spec.js @@ -27,6 +27,17 @@ describe('mp:compiler-extra', () => { } } ) + assertCodegen( + /* eslint-disable no-template-curly-in-string */ + '{{item}}', + '{{item}}', + 'with(this){}', { + filterModules: { + t: {}, + a: {} + } + } + ) }) it('generate scopeId', () => { diff --git a/packages/uni-template-compiler/lib/script/traverse/render-list.js b/packages/uni-template-compiler/lib/script/traverse/render-list.js index f96098b57..a9f3b7c55 100644 --- a/packages/uni-template-compiler/lib/script/traverse/render-list.js +++ b/packages/uni-template-compiler/lib/script/traverse/render-list.js @@ -16,7 +16,8 @@ const { traverseKey, processMemberExpression, getForIndexIdentifier, - isSimpleObjectExpression + isSimpleObjectExpression, + traverseFilter } = require('../../util') const getMemberExpr = require('./member-expr') @@ -185,7 +186,7 @@ module.exports = function traverseRenderList (path, state) { } }) } - } else if (forPath.isCallExpression() || (forPath.isObjectExpression() && !isSimpleObjectExpression(forPath.node))) { + } else if ((forPath.isCallExpression() && !traverseFilter(forPath.node.callee, state)) || (forPath.isObjectExpression() && !isSimpleObjectExpression(forPath.node))) { forPath.replaceWith(getMemberExpr(forPath, IDENTIFIER_FOR, forPath.node, forState)) } else { forPath.traverse(require('./visitor'), forState) -- GitLab