Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
li_dai
uni-app
提交
e408d001
U
uni-app
项目概览
li_dai
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e408d001
编写于
4月 14, 2020
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 修复部分组件嵌套在 uni-popup 组件内渲染错误的问题
上级
e8ddbb9f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
75 addition
and
70 deletion
+75
-70
src/core/view/components/movable-area/index.vue
src/core/view/components/movable-area/index.vue
+13
-11
src/core/view/components/picker-view/index.vue
src/core/view/components/picker-view/index.vue
+3
-1
src/core/view/components/swiper/index.vue
src/core/view/components/swiper/index.vue
+1
-18
src/shared/util.js
src/shared/util.js
+58
-40
未找到文件。
src/core/view/components/movable-area/index.vue
浏览文件 @
e408d001
<
script
>
import
{
disableScrollBounce
disableScrollBounce
,
deepClone
}
from
'
uni-shared
'
function
calc
(
e
)
{
...
...
@@ -56,9 +57,9 @@ export default {
}
return
get
(
target
)
},
_touchstart
(
t
)
{
disableScrollBounce
({
disable
:
true
_touchstart
(
t
)
{
disableScrollBounce
({
disable
:
true
})
var
i
=
t
.
touches
if
(
i
)
{
...
...
@@ -94,9 +95,9 @@ export default {
}
}
},
_touchend
(
e
)
{
disableScrollBounce
({
disable
:
false
_touchend
(
e
)
{
disableScrollBounce
({
disable
:
false
})
var
t
=
e
.
touches
if
(
!
(
t
&&
t
.
length
))
{
...
...
@@ -142,8 +143,9 @@ export default {
},
render
(
createElement
)
{
var
items
=
[]
if
(
this
.
$slots
.
default
)
{
this
.
$slots
.
default
.
forEach
(
vnode
=>
{
const
$slots
=
this
.
$slots
.
default
&&
deepClone
(
this
.
$slots
.
default
,
createElement
)
if
(
$slots
)
{
$slots
.
forEach
(
vnode
=>
{
if
(
vnode
.
componentOptions
&&
vnode
.
componentOptions
.
tag
===
'
v-uni-movable-view
'
)
{
items
.
push
(
vnode
)
}
...
...
@@ -163,7 +165,7 @@ export default {
on
:
{
resize
:
this
.
_resize
}
}),
this
.
$slots
.
default
])
}),
$slots
])
}
}
</
script
>
...
...
@@ -178,4 +180,4 @@ export default {
uni-movable-area
[
hidden
]
{
display
:
none
;
}
</
style
>
</
style
>
src/core/view/components/picker-view/index.vue
浏览文件 @
e408d001
<
script
>
import
{
deepClone
}
from
'
uni-shared
'
export
default
{
name
:
'
PickerView
'
,
props
:
{
...
...
@@ -93,7 +95,7 @@ export default {
render
(
createElement
)
{
var
items
=
[]
if
(
this
.
$slots
.
default
)
{
this
.
$slots
.
default
.
forEach
(
vnode
=>
{
deepClone
(
this
.
$slots
.
default
,
createElement
)
.
forEach
(
vnode
=>
{
if
(
vnode
.
componentOptions
&&
vnode
.
componentOptions
.
tag
===
'
v-uni-picker-view-column
'
)
{
items
.
push
(
vnode
)
}
...
...
src/core/view/components/swiper/index.vue
浏览文件 @
e408d001
<
script
>
import
touchtrack
from
'
uni-mixins/touchtrack
'
function
deepClone
(
vnodes
,
createElement
)
{
function
cloneVNode
(
vnode
)
{
var
clonedChildren
=
vnode
.
children
&&
vnode
.
children
.
map
(
cloneVNode
)
var
cloned
=
createElement
(
vnode
.
tag
,
vnode
.
data
,
clonedChildren
)
cloned
.
text
=
vnode
.
text
cloned
.
isComment
=
vnode
.
isComment
cloned
.
componentOptions
=
vnode
.
componentOptions
cloned
.
elm
=
vnode
.
elm
cloned
.
context
=
vnode
.
context
cloned
.
ns
=
vnode
.
ns
cloned
.
isStatic
=
vnode
.
isStatic
cloned
.
key
=
vnode
.
key
return
cloned
}
return
vnodes
.
map
(
cloneVNode
)
}
import
{
deepClone
}
from
'
uni-shared
'
export
default
{
name
:
'
Swiper
'
,
...
...
src/shared/util.js
浏览文件 @
e408d001
...
...
@@ -95,43 +95,61 @@ export function debounce (fn, delay) {
export
function
kebabCase
(
string
)
{
return
string
.
replace
(
/
[
A-Z
]
/g
,
str
=>
'
-
'
+
str
.
toLowerCase
())
}
/**
* Check if two values are loosely equal - that is,
* if they are plain objects, do they have the same shape?
*/
export
function
looseEqual
(
a
,
b
)
{
if
(
a
===
b
)
return
true
const
isObjectA
=
isObject
(
a
)
const
isObjectB
=
isObject
(
b
)
if
(
isObjectA
&&
isObjectB
)
{
try
{
const
isArrayA
=
Array
.
isArray
(
a
)
const
isArrayB
=
Array
.
isArray
(
b
)
if
(
isArrayA
&&
isArrayB
)
{
return
a
.
length
===
b
.
length
&&
a
.
every
((
e
,
i
)
=>
{
return
looseEqual
(
e
,
b
[
i
])
})
}
else
if
(
a
instanceof
Date
&&
b
instanceof
Date
)
{
return
a
.
getTime
()
===
b
.
getTime
()
}
else
if
(
!
isArrayA
&&
!
isArrayB
)
{
const
keysA
=
Object
.
keys
(
a
)
const
keysB
=
Object
.
keys
(
b
)
return
keysA
.
length
===
keysB
.
length
&&
keysA
.
every
(
key
=>
{
return
looseEqual
(
a
[
key
],
b
[
key
])
})
}
else
{
/* istanbul ignore next */
return
false
}
}
catch
(
e
)
{
/* istanbul ignore next */
return
false
}
}
else
if
(
!
isObjectA
&&
!
isObjectB
)
{
return
String
(
a
)
===
String
(
b
)
}
else
{
return
false
}
}
}
/**
* Check if two values are loosely equal - that is,
* if they are plain objects, do they have the same shape?
*/
export
function
looseEqual
(
a
,
b
)
{
if
(
a
===
b
)
return
true
const
isObjectA
=
isObject
(
a
)
const
isObjectB
=
isObject
(
b
)
if
(
isObjectA
&&
isObjectB
)
{
try
{
const
isArrayA
=
Array
.
isArray
(
a
)
const
isArrayB
=
Array
.
isArray
(
b
)
if
(
isArrayA
&&
isArrayB
)
{
return
a
.
length
===
b
.
length
&&
a
.
every
((
e
,
i
)
=>
{
return
looseEqual
(
e
,
b
[
i
])
})
}
else
if
(
a
instanceof
Date
&&
b
instanceof
Date
)
{
return
a
.
getTime
()
===
b
.
getTime
()
}
else
if
(
!
isArrayA
&&
!
isArrayB
)
{
const
keysA
=
Object
.
keys
(
a
)
const
keysB
=
Object
.
keys
(
b
)
return
keysA
.
length
===
keysB
.
length
&&
keysA
.
every
(
key
=>
{
return
looseEqual
(
a
[
key
],
b
[
key
])
})
}
else
{
/* istanbul ignore next */
return
false
}
}
catch
(
e
)
{
/* istanbul ignore next */
return
false
}
}
else
if
(
!
isObjectA
&&
!
isObjectB
)
{
return
String
(
a
)
===
String
(
b
)
}
else
{
return
false
}
}
export
function
deepClone
(
vnodes
,
createElement
)
{
function
cloneVNode
(
vnode
)
{
var
clonedChildren
=
vnode
.
children
&&
vnode
.
children
.
map
(
cloneVNode
)
var
cloned
=
createElement
(
vnode
.
tag
,
vnode
.
data
,
clonedChildren
)
cloned
.
text
=
vnode
.
text
cloned
.
isComment
=
vnode
.
isComment
cloned
.
componentOptions
=
vnode
.
componentOptions
cloned
.
elm
=
vnode
.
elm
cloned
.
context
=
vnode
.
context
cloned
.
ns
=
vnode
.
ns
cloned
.
isStatic
=
vnode
.
isStatic
cloned
.
key
=
vnode
.
key
return
cloned
}
return
vnodes
.
map
(
cloneVNode
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录