Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
73d63f12
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
731
Star
38707
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
73d63f12
编写于
8月 19, 2020
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 优化 test 表达式查询 question/105048
上级
02a189de
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
13 addition
and
12 deletion
+13
-12
packages/uni-template-compiler/__tests__/compiler-extra.spec.js
...es/uni-template-compiler/__tests__/compiler-extra.spec.js
+5
-0
packages/uni-template-compiler/lib/script/traverse/member-expr.js
.../uni-template-compiler/lib/script/traverse/member-expr.js
+8
-12
未找到文件。
packages/uni-template-compiler/__tests__/compiler-extra.spec.js
浏览文件 @
73d63f12
...
...
@@ -697,6 +697,11 @@ describe('mp:compiler-extra', () => {
'
<block wx:if="{{$root.m0}}"><view>{{$root.m1}}</view></block>
'
,
'
with(this){var m0=getValue(key);var m1=m0?getValue(key):null;$mp.data=Object.assign({},{$root:{m0:m0,m1:m1}})}
'
)
assertCodegen
(
'
<view v-if="test1(key)&&test2(key)">{{getValue(key)}}</view>
'
,
'
<block wx:if="{{$root.m0&&$root.m1}}"><view>{{$root.m2}}</view></block>
'
,
'
with(this){var m0=test1(key);var m1=test2(key);var m2=m0&&m1?getValue(key):null;$mp.data=Object.assign({},{$root:{m0:m0,m1:m1,m2:m2}})}
'
)
assertCodegen
(
'
<view v-for="(item,index) in list" :key="index"><view v-if="item">{{getValue(item)}}</view></view>
'
,
'
<block wx:for="{{$root.l0}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view><block wx:if="{{item.$orig}}"><view>{{item.m0}}</view></block></view></block>
'
,
...
...
packages/uni-template-compiler/lib/script/traverse/member-expr.js
浏览文件 @
73d63f12
...
...
@@ -71,18 +71,14 @@ function findTest (path, state) {
const
property
=
node
.
property
const
propertyName
=
property
.
name
if
(
objectName
===
VAR_ROOT
||
(
names
.
includes
(
objectName
)
&&
(
propertyName
===
IDENTIFIER_METHOD
||
propertyName
===
IDENTIFIER_FILTER
||
propertyName
===
IDENTIFIER_GLOBAL
)))
{
let
property
traverse
(
testOrig
,
{
noScope
:
true
,
Identifier
(
identifierPath
)
{
const
node
=
identifierPath
.
node
if
(
node
.
name
===
propertyName
)
{
property
=
node
identifierPath
.
stop
()
}
}
})
memberExpressionPath
.
replaceWith
(
property
)
const
array
=
[]
let
tempPath
=
memberExpressionPath
while
(
tempPath
.
parentPath
)
{
const
key
=
tempPath
.
key
array
.
unshift
(
typeof
key
===
'
number
'
?
`[
${
key
}
]`
:
`.
${
key
}
`
)
tempPath
=
tempPath
.
parentPath
}
memberExpressionPath
.
replaceWith
(
path
.
parentPath
.
get
(
'
test
'
+
array
.
join
(
''
)).
node
.
property
)
}
}
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录