明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_front
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
jt_front
Commits
5c8aa9ce
Commit
5c8aa9ce
authored
Feb 09, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
730179f8
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
88 additions
and
341 deletions
+88
-341
delayRender.js
src/directives/delayRender.js
+63
-0
index.js
src/directives/index.js
+5
-0
main.js
src/main.js
+5
-0
quitAdd.vue
src/views/investingManage/quitAdd.vue
+15
-341
No files found.
src/directives/delayRender.js
0 → 100644
View file @
5c8aa9ce
// src/directives/delayRender.js
/**
* 延迟渲染自定义指令(修复版)
* @param {Number} binding.value - 延迟时间(ms),默认2000ms
* 核心:延迟期间清空DOM,到期后恢复原始HTML,兼容Vue虚拟DOM
*/
export
default
{
mounted
(
el
,
binding
)
{
// 1. 校验延迟时间,默认2秒
const
delay
=
Number
.
isFinite
(
Number
(
binding
.
value
))
?
Number
(
binding
.
value
)
:
2000
;
// 2. 保存原始HTML内容(字符串形式,兼容Vue虚拟DOM,不会丢失)
el
.
_originalHTML
=
el
.
innerHTML
;
// 3. 清空DOM,实现“不渲染”(可选:添加加载占位符)
el
.
innerHTML
=
""
;
// 纯清空,无占位符
// 可选:添加加载占位符(提升体验)
// el.innerHTML = '<div style="padding: 20px; color: #999;">正在加载...</div>';
// 4. 延迟后恢复原始内容,触发渲染
el
.
_delayRenderTimer
=
setTimeout
(()
=>
{
// 关键:恢复保存的原始HTML
if
(
el
.
_originalHTML
)
{
el
.
innerHTML
=
el
.
_originalHTML
;
// 清理临时变量,减少内存占用
delete
el
.
_originalHTML
;
}
},
delay
);
},
// 组件卸载时强制清理,防止内存泄漏+残留问题
unmounted
(
el
)
{
// 清理定时器
if
(
el
.
_delayRenderTimer
)
{
clearTimeout
(
el
.
_delayRenderTimer
);
delete
el
.
_delayRenderTimer
;
}
// 清理保存的原始HTML
if
(
el
.
_originalHTML
)
{
delete
el
.
_originalHTML
;
}
},
// 可选:指令更新时重新处理(比如延迟时间动态变化)
updated
(
el
,
binding
)
{
// 先清理旧定时器
if
(
el
.
_delayRenderTimer
)
{
clearTimeout
(
el
.
_delayRenderTimer
);
}
// 重新执行挂载逻辑
const
delay
=
Number
.
isFinite
(
Number
(
binding
.
value
))
?
Number
(
binding
.
value
)
:
2000
;
el
.
_originalHTML
=
el
.
innerHTML
;
el
.
innerHTML
=
""
;
el
.
_delayRenderTimer
=
setTimeout
(()
=>
{
el
.
innerHTML
=
el
.
_originalHTML
;
delete
el
.
_originalHTML
;
},
delay
);
},
};
src/directives/index.js
0 → 100644
View file @
5c8aa9ce
import
delayRender
from
"./delayRender"
;
export
default
{
"delay-render"
:
delayRender
,
// 指令名与指令实现映射
};
src/main.js
View file @
5c8aa9ce
import
{
createApp
}
from
"vue"
;
// 自定义指令
import
directives
from
"./directives"
;
import
"./style.css"
;
import
App
from
"./App.vue"
;
import
ElementPlus
from
"element-plus"
;
...
...
@@ -20,6 +22,9 @@ app.config.globalProperties.$get = $get;
app
.
config
.
globalProperties
.
$post
=
$post
;
app
.
config
.
globalProperties
.
windowConfig
=
windowConfig
;
app
.
config
.
globalProperties
.
moment
=
moment
;
Object
.
entries
(
directives
).
forEach
(([
directiveName
,
directive
])
=>
{
app
.
directive
(
directiveName
,
directive
);
});
for
(
const
[
key
,
component
]
of
Object
.
entries
(
ElIcons
))
{
app
.
component
(
key
,
component
);
}
...
...
src/views/investingManage/quitAdd.vue
View file @
5c8aa9ce
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment