Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
bd96693e
U
uni-app
项目概览
DCloud
/
uni-app
2 个月 前同步成功
通知
717
Star
38705
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bd96693e
编写于
11月 19, 2021
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mp): v-if + v-for
上级
92be62f5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
5 deletion
+22
-5
packages/uni-mp-compiler/__tests__/vFor.spec.ts
packages/uni-mp-compiler/__tests__/vFor.spec.ts
+2
-2
packages/uni-mp-compiler/src/template/codegen.ts
packages/uni-mp-compiler/src/template/codegen.ts
+20
-3
未找到文件。
packages/uni-mp-compiler/__tests__/vFor.spec.ts
浏览文件 @
bd96693e
...
...
@@ -204,7 +204,7 @@ describe(`compiler: v-for`, () => {
test
(
`v-if + v-for`
,
()
=>
{
assert
(
`<view v-if="ok" v-for="i in list"/>`
,
`<
view wx:if="{{a}}" wx:for="{{b}}" wx:for-item="i"/
>`
,
`<
block wx:if="{{a}}"><view wx:for="{{b}}" wx:for-item="i"/></block
>`
,
`(_ctx, _cache) => {
return _e({ a: _ctx.ok }, _ctx.ok ? { b: _f(_ctx.list, (i, k0, i0) => { return {}; }) } : {})
}`
...
...
@@ -214,7 +214,7 @@ describe(`compiler: v-for`, () => {
test
(
`v-if + v-for on <template>`
,
()
=>
{
assert
(
`<template v-if="ok" v-for="i in list"/>`
,
`<block wx:if="{{a}}"
wx:for="{{b}}" wx:for-item="i"/
>`
,
`<block wx:if="{{a}}"
><block wx:for="{{b}}" wx:for-item="i"/></block
>`
,
`(_ctx, _cache) => {
return _e({ a: _ctx.ok }, _ctx.ok ? { b: _f(_ctx.list, (i, k0, i0) => { return {}; }) } : {})
}`
...
...
packages/uni-mp-compiler/src/template/codegen.ts
浏览文件 @
bd96693e
...
...
@@ -270,8 +270,11 @@ function genElement(node: ElementNode, context: TemplateCodegenContext) {
tag
=
hyphenate
(
tag
)
}
const
{
push
}
=
context
push
(
`<
${
tag
}
`
)
if
(
isIfElementNode
(
node
))
{
const
hasVIf
=
isIfElementNode
(
node
)
const
hasVFor
=
isForElementNode
(
node
)
const
hasVIfAndVFor
=
hasVIf
&&
hasVFor
function
genVIfCode
(
node
:
IfElementNode
)
{
const
{
name
,
condition
}
=
node
.
vIf
if
(
name
===
'
if
'
)
{
genVIf
(
condition
!
,
context
)
...
...
@@ -281,7 +284,18 @@ function genElement(node: ElementNode, context: TemplateCodegenContext) {
genVElse
(
context
)
}
}
if
(
isForElementNode
(
node
))
{
// 小程序中 wx:else wx:elif 不支持与 wx:for 同时使用
// 故 if 需要补充一层 block
if
(
hasVIfAndVFor
)
{
push
(
`<block`
)
genVIfCode
(
node
)
push
(
`>`
)
}
push
(
`<
${
tag
}
`
)
if
(
!
hasVIfAndVFor
&&
hasVIf
)
{
genVIfCode
(
node
)
}
if
(
hasVFor
)
{
genVFor
(
node
,
context
)
}
if
(
props
.
length
)
{
...
...
@@ -297,6 +311,9 @@ function genElement(node: ElementNode, context: TemplateCodegenContext) {
})
push
(
`</
${
tag
}
>`
)
}
if
(
hasVIfAndVFor
)
{
push
(
`</block>`
)
}
}
export
function
genElementProps
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录