Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
ccfb7f5a
U
uni-app
项目概览
DCloud
/
uni-app
2 个月 前同步成功
通知
715
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,发现更多精彩内容 >>
提交
ccfb7f5a
编写于
11月 02, 2021
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: rich-text support itemclick event
上级
abf1d95c
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
27 addition
and
9 deletion
+27
-9
src/core/view/components/rich-text/index.vue
src/core/view/components/rich-text/index.vue
+13
-1
src/core/view/components/rich-text/nodes-parser.js
src/core/view/components/rich-text/nodes-parser.js
+14
-8
未找到文件。
src/core/view/components/rich-text/index.vue
浏览文件 @
ccfb7f5a
...
...
@@ -32,13 +32,22 @@ export default {
},
methods
:
{
_renderNodes
(
nodes
)
{
let
scopeId
=
''
let
$vm
=
this
while
(
$vm
)
{
!
scopeId
&&
(
scopeId
=
$vm
.
$options
.
_scopeId
)
$vm
=
$vm
.
$parent
}
const
hasItemClick
=
!!
this
.
$listeners
.
itemclick
if
(
!
this
.
_isMounted
)
{
return
}
if
(
typeof
nodes
===
'
string
'
)
{
nodes
=
parseHtml
(
nodes
)
}
const
nodeList
=
parseNodes
(
nodes
,
document
.
createDocumentFragment
(),
this
)
const
nodeList
=
parseNodes
(
nodes
,
document
.
createDocumentFragment
(),
scopeId
,
hasItemClick
&&
this
.
triggerItemClick
)
nodeList
.
appendChild
(
this
.
$refs
.
sensor
.
$el
)
const
content
=
this
.
$refs
.
content
content
.
innerHTML
=
''
...
...
@@ -46,6 +55,9 @@ export default {
},
_updateView
()
{
window
.
dispatchEvent
(
new
CustomEvent
(
'
updateview
'
))
},
triggerItemClick
(
e
,
detail
=
{})
{
this
.
$trigger
(
'
itemclick
'
,
e
,
detail
)
}
}
}
...
...
src/core/view/components/rich-text/nodes-parser.js
浏览文件 @
ccfb7f5a
...
...
@@ -102,13 +102,7 @@ function normlizeValue (tagName, name, value) {
return
value
}
export
default
function
parseNodes
(
nodes
,
parentNode
,
$vm
)
{
let
scopeId
=
''
while
(
$vm
)
{
!
scopeId
&&
(
scopeId
=
$vm
.
$options
.
_scopeId
)
$vm
=
$vm
.
$parent
}
export
default
function
parseNodes
(
nodes
,
parentNode
,
scopeId
,
triggerItemClick
)
{
nodes
.
forEach
(
function
(
node
)
{
if
(
!
isPlainObject
(
node
))
{
return
...
...
@@ -146,9 +140,11 @@ export default function parseNodes (nodes, parentNode, $vm) {
})
}
processClickEvent
(
node
,
elem
,
triggerItemClick
)
const
children
=
node
.
children
if
(
Array
.
isArray
(
children
)
&&
children
.
length
)
{
parseNodes
(
node
.
children
,
elem
)
parseNodes
(
node
.
children
,
elem
,
scopeId
,
triggerItemClick
)
}
parentNode
.
appendChild
(
elem
)
...
...
@@ -160,3 +156,13 @@ export default function parseNodes (nodes, parentNode, $vm) {
})
return
parentNode
}
function
processClickEvent
(
node
,
elem
,
triggerItemClick
)
{
if
([
'
a
'
,
'
img
'
].
includes
(
node
.
name
)
&&
triggerItemClick
)
{
elem
.
setAttribute
(
'
onClick
'
,
'
return false;
'
)
elem
.
addEventListener
(
'
click
'
,
(
e
)
=>
{
triggerItemClick
(
e
,
{
node
})
e
.
stopPropagation
()
},
true
)
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录