Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mui
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
mui
Commits
fa8d9c80
Commit
fa8d9c80
authored
Sep 18, 2014
by
崔红保
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加自定义事件说明
parent
fa9c5697
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
65 additions
and
0 deletions
+65
-0
javascript/index.html
javascript/index.html
+65
-0
No files found.
javascript/index.html
View file @
fa8d9c80
...
...
@@ -587,6 +587,71 @@ mui的解决思路是:单webview只承载单个页面的dom,减少dom层级
<span
class=
"p"
>
});
</span></code></pre></div>
</article>
<!-- 自定义事件 -->
<article
id=
"customevent"
class=
"component mui-active"
>
<h3
class=
"component-title"
>
自定义事件
</h3>
<p
class=
"component-description"
>
用户开发应用中会大量使用事件功能。除了浏览器内置的事件及mui框架内置的事件(比如手势事件)外,mui同时支持用户触发和绑定自定义事件。通过自定义事件,用户可以轻松实现页面间数据传递。
</p>
<p
class=
"component-description"
><strong>
监听自定义事件
</strong></p>
<p
class=
"component-description"
>
添加自定义事件监听操作和标准js事件监听类似,可直接通过window对象添加,如下:
</p>
<div
class=
"highlight"
><pre><code
class=
"language-js"
data-lang=
"js"
><span
class=
"nb"
>
window
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
addEventListener
</span><span
class=
"p"
>
(
</span><span
class=
"s1"
>
'
customEvent
'
</span><span
class=
"p"
>
,
</span><span
class=
"kd"
>
function
</span><span
class=
"p"
>
(
</span><span
class=
"nx"
>
event
</span><span
class=
"p"
>
){
</span>
<span
class=
"c1"
>
//通过event.detail可获得传递过来的参数内容
</span>
<span
class=
"p"
>
....
</span>
<span
class=
"p"
>
});
</span></code></pre></div>
<p
class=
"component-description"
><strong>
触发自定义事件
</strong></p>
<p
class=
"component-description"
>
通过mui.fire方法可触发目标窗口的自定义事件:
</p>
<div
class=
"highlight"
><pre><code
class=
"language-js"
data-lang=
"js"
><span
class=
"nx"
>
mui
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
fire
</span><span
class=
"p"
>
(
</span><span
class=
"nx"
>
targetPage
</span><span
class=
"p"
>
,
</span><span
class=
"s1"
>
'
customEvent
'
</span><span
class=
"p"
>
,{
</span>
<span
class=
"c1"
>
//自定义事件参数
</span>
<span
class=
"p"
>
});
</span></code></pre></div>
<p
class=
"component-description"
><strong>
示例:
</strong>
假设如下场景:从新闻列表页面进入新闻详情页面,新闻详情页面为共用页面,通过传递新闻ID通知详情页面需要显示具体哪个新闻,详情页面再动态向服务器请求数据,mui要实现类似需求可通过如下步骤实现:
<ul>
<li>
在列表页面中预加载详情页面(假设为detail.html)
</li>
<li>
列表页面在点击新闻标题时,首先,获得该新闻id,触发详情页面的newsId事件,并将新闻id作为事件参数传递过去;然后再打开详情页面;
</li>
<li>
详情页面监听newsId自定义事件
</li>
</ul>
</p>
<p
class=
"component-description"
>
列表页面代码如下:
</p>
<div
class=
"highlight"
><pre><code
class=
"language-js"
data-lang=
"js"
><span
class=
"c1"
>
//初始化预加载详情页面
</span>
<span
class=
"nx"
>
mui
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
init
</span><span
class=
"p"
>
({
</span>
<span
class=
"nx"
>
preloadPages
</span><span
class=
"o"
>
:
</span><span
class=
"p"
>
[{
</span>
<span
class=
"nx"
>
id
</span><span
class=
"o"
>
:
</span><span
class=
"s1"
>
'
detail.html
'
</span><span
class=
"p"
>
,
</span>
<span
class=
"nx"
>
url
</span><span
class=
"o"
>
:
</span><span
class=
"s1"
>
'
detail.html
'
</span>
<span
class=
"p"
>
}
</span>
<span
class=
"p"
>
]
</span>
<span
class=
"p"
>
});
</span>
<span
class=
"kd"
>
var
</span>
<span
class=
"nx"
>
detailPage
</span>
<span
class=
"o"
>
=
</span>
<span
class=
"kc"
>
null
</span><span
class=
"p"
>
;
</span>
<span
class=
"c1"
>
//添加列表项的点击事件
</span>
<span
class=
"nx"
>
mui
</span><span
class=
"p"
>
(
</span><span
class=
"s1"
>
'
.mui-content
'
</span><span
class=
"p"
>
).
</span><span
class=
"nx"
>
on
</span><span
class=
"p"
>
(
</span><span
class=
"s1"
>
'
tap
'
</span><span
class=
"p"
>
,
</span>
<span
class=
"s1"
>
'
a
'
</span><span
class=
"p"
>
,
</span>
<span
class=
"kd"
>
function
</span><span
class=
"p"
>
(
</span><span
class=
"nx"
>
e
</span><span
class=
"p"
>
)
</span>
<span
class=
"p"
>
{
</span>
<span
class=
"kd"
>
var
</span>
<span
class=
"nx"
>
id
</span>
<span
class=
"o"
>
=
</span>
<span
class=
"k"
>
this
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
getAttribute
</span><span
class=
"p"
>
(
</span><span
class=
"s1"
>
'
id
'
</span><span
class=
"p"
>
);
</span>
<span
class=
"c1"
>
//获得详情页面
</span>
<span
class=
"k"
>
if
</span><span
class=
"p"
>
(
</span><span
class=
"o"
>
!
</span><span
class=
"nx"
>
detailPage
</span><span
class=
"p"
>
){
</span>
<span
class=
"nx"
>
detailPage
</span>
<span
class=
"o"
>
=
</span>
<span
class=
"nx"
>
plus
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
webview
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
getWebviewById
</span><span
class=
"p"
>
(
</span><span
class=
"s1"
>
'
detail.html
'
</span><span
class=
"p"
>
);
</span>
<span
class=
"p"
>
}
</span>
<span
class=
"c1"
>
//触发详情页面的newsId事件
</span>
<span
class=
"nx"
>
mui
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
fire
</span><span
class=
"p"
>
(
</span><span
class=
"nx"
>
detailPage
</span><span
class=
"p"
>
,
</span><span
class=
"s1"
>
'
newsId
'
</span><span
class=
"p"
>
,{
</span>
<span
class=
"nx"
>
id
</span><span
class=
"o"
>
:
</span><span
class=
"nx"
>
id
</span>
<span
class=
"p"
>
});
</span>
<span
class=
"c1"
>
//打开详情页面
</span>
<span
class=
"nx"
>
mui
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
openWindow
</span><span
class=
"p"
>
({
</span>
<span
class=
"nx"
>
id
</span><span
class=
"o"
>
:
</span><span
class=
"s1"
>
'
detail.html
'
</span>
<span
class=
"p"
>
});
</span>
<span
class=
"p"
>
});
</span></code></pre></div>
<p
class=
"component-description"
>
详情页面代码如下:
</p>
<div
class=
"highlight"
><pre><code
class=
"language-js"
data-lang=
"js"
><span
class=
"c1"
>
//添加newId自定义事件监听
</span>
<span
class=
"nb"
>
window
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
addEventListener
</span><span
class=
"p"
>
(
</span><span
class=
"s1"
>
'
newsId
'
</span><span
class=
"p"
>
,
</span><span
class=
"kd"
>
function
</span><span
class=
"p"
>
(
</span><span
class=
"nx"
>
event
</span><span
class=
"p"
>
){
</span>
<span
class=
"c1"
>
//获得事件参数
</span>
<span
class=
"kd"
>
var
</span>
<span
class=
"nx"
>
id
</span>
<span
class=
"o"
>
=
</span>
<span
class=
"nx"
>
event
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
detail
</span><span
class=
"p"
>
.
</span><span
class=
"nx"
>
id
</span><span
class=
"p"
>
;
</span>
<span
class=
"c1"
>
//根据id向服务器请求新闻详情
</span>
<span
class=
"p"
>
.....
</span>
<span
class=
"p"
>
});
</span></code></pre></div>
</article>
<!-- Footer -->
<div
class=
"docs-footer"
>
<p
class=
"docs-footer-text"
>
mui遵循
<a
href=
"https://github.com/dcloudio/mui/blob/master/LICENSE"
>
MIT License
</a>
...
...
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