Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
dc5bb5f4
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
dc5bb5f4
编写于
2月 23, 2023
作者:
O
openharmony_ci
提交者:
Gitee
2月 23, 2023
浏览文件
操作
浏览文件
下载
差异文件
!15040 ArkUi Plugin相关接口整改changelog
Merge pull request !15040 from wangchensu/monthly
上级
b91431fb
7e8557e0
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
513 addition
and
154 deletion
+513
-154
zh-cn/application-dev/reference/apis/Readme-CN.md
zh-cn/application-dev/reference/apis/Readme-CN.md
+1
-0
zh-cn/application-dev/reference/apis/js-apis-plugincomponent.md
...application-dev/reference/apis/js-apis-plugincomponent.md
+398
-0
zh-cn/application-dev/reference/arkui-ts/ts-basic-components-plugincomponent.md
...reference/arkui-ts/ts-basic-components-plugincomponent.md
+114
-154
未找到文件。
zh-cn/application-dev/reference/apis/Readme-CN.md
浏览文件 @
dc5bb5f4
...
...
@@ -163,6 +163,7 @@
-
[
@ohos.curves (插值计算)
](
js-apis-curve.md
)
-
[
@ohos.matrix4 (矩阵变换)
](
js-apis-matrix4.md
)
-
[
@ohos.mediaquery (媒体查询)
](
js-apis-mediaquery.md
)
-
[
@ohos.pluginComponent(PluginComponentManager)
](
js-apis-plugincomponent.md
)
-
[
@ohos.promptAction (弹窗)
](
js-apis-promptAction.md
)
-
[
@ohos.router (页面路由)
](
js-apis-router.md
)
...
...
zh-cn/application-dev/reference/apis/js-apis-plugincomponent.md
0 → 100644
浏览文件 @
dc5bb5f4
# @ohos.pluginComponent (PluginComponentManager)
用于给插件组件的使用者请求组件与数据,使用者发送组件模板和数据。如需实现插件模板的显示,请参考
[
PluginComponent
](
../arkui-ts/ts-basic-components-plugincomponent.md
)
。
> **说明:**
>
> - 本模块首批接口从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 导入模块
```
js
import
pluginComponentManager
from
'
@ohos.pluginComponent
'
```
## PluginComponentTemplate
Plugin组件模板参数。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 参数 | 类型 | 必填 | 描述 |
| ---------- | ------ | ---- | --------------------------- |
| source | string | 是 | 组件模板名。 |
| bundleName | string | 是 | 提供者Ability的bundleName。 |
## PluginComponentManager
### KVObject
以键值对形式存储信息,符合json格式。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 取值范围 | 说明 |
| --------------------- | ---------------------------------------- |
| [key: string] | 关键字,数据类型为字符串,可取空字符串。 |
| number | 键值,表示值类型为数字。 |
| string | 键值,表示值类型为字符串,可取空字符串。 |
| boolean | 键值,表示值类型为布尔值。 |
| [] | 键值,可取值为[]。 |
|
[
KVObject
](
#kvobject
)
| 键值,表示值类型为KVObject。 |
### PushParameters
用于设置FA模型下使用PluginManager.Push方法时候的需要传递的参数。
**模型约束:**
此接口仅适用于FA模型。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 必填 | 说明 |
| --------- | ----------------------------------- | ---- | -------------------------------------------------------------- |
| want |
[
Want
](
js-apis-application-want.md
)
| 是 | 组件使用者Ability信息。 |
| name | string | 是 | 组件名称。 |
| data |
[
KVObject
](
#kvobject
)
| 否 | 组件数据值。 |
| extraData |
[
KVObject
](
#kvobject
)
| 否 | 附加数据值。 |
| jsonPath | string | 否 | 存放模板路径的
[
external.json
](
#externaljson文件说明
)
件的路径。 |
### PushParameterForStage
用于设置Stage模型下使用PluginManager.Push方法时候的需要传递的参数。
**模型约束:**
此接口仅适用于Stage模型。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 必填 | 说明 |
| --------- | ----------------------------------- | ---- | ---------------------------------------------------------------- |
| owner |
[
Want
](
js-apis-application-want.md
)
| 是 | 组件提供方Ability信息。 |
| target |
[
Want
](
js-apis-application-want.md
)
| 是 | 组件使用者Ability信息。 |
| name | string | 是 | 组件名称。 |
| data |
[
KVObject
](
#kvobject
)
| 否 | 组件数据值。 |
| extraData |
[
KVObject
](
#kvobject
)
| 否 | 附加数据值。 |
| jsonPath | string | 否 | 存放模板路径的
[
external.json
](
#externaljson文件说明
)
文件的路径。 |
### RequestParameters
用于设置FA模型下使用PluginManager.Request方法时候的需要传递的参数。
**模型约束:**
此接口仅适用于FA模型。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | --------------------------------------------------------------------------------------------------------------------- |
| want |
[
Want
](
js-apis-application-want.md
)
| 是 | 组件提供者Ability信息。 |
| name | string | 是 | 请求组件名称。 |
| data |
[
KVObject
](
#kvobject
)
| 是 | 附加数据。 |
| jsonPath | string | 否 | 存放模板路径的
[
external.json
](
#externaljson文件说明
)
文件的路径。jsonPath字段不为空或者未设置的时候不触发Request通信。 |
### RequestParameterForStage
用于设置Stage模型下使用PluginManager.Request方法时候的需要传递的参数。
**系统接口:**
此接口为系统接口。
**模型约束:**
此接口仅适用于Stage模型。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | --------------------------------------------------------------------------------------------------------------------- |
| owner |
[
Want
](
js-apis-application-want.md
)
| 是 | 组件使用者Ability信息。 |
| target |
[
Want
](
js-apis-application-want.md
)
| 是 | 组件提供者Ability信息。 |
| name | string | 是 | 请求组件名称。 |
| data |
[
KVObject
](
#kvobject
)
| 是 | 附加数据。 |
| jsonPath | string | 否 | 存放模板路径的
[
external.json
](
#externaljson文件说明
)
文件的路径。jsonPath字段不为空或者未设置的时候不触发Request通信。 |
### RequestCallbackParameters
PluginManager.Request方法时候接收到的回调结果。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 必填 | 说明 |
| ----------------- | ---------------------------------------------------- | ---- | ---------- |
| componentTemplate |
[
PluginComponentTemplate
](
#plugincomponenttemplate
)
] | 是 | 组件模板。 |
| data |
[
KVObject
](
#kvobject
)
| 是 | 组件数据。 |
| extraData |
[
KVObject
](
#kvobject
)
| 是 | 附加数据。 |
### RequestEventResult
注册Request监听方法后,接受到的请求事件时候回应请求的数据类型。
**系统能力:**
SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 必填 | 说明 |
| --------- | --------------------- | ---- | ---------- |
| template | string | 否 | 组件模板。 |
| data |
[
KVObject
](
#kvobject
)
| 否 | 组件数据。 |
| extraData |
[
KVObject
](
#kvobject
)
| 否 | 附加数据。 |
### OnPushEventCallback
OnPushEventCallback = (source: Want, template: PluginComponentTemplate, data: KVObject,
extraData: KVObject) => void
对应Push事件的监听回调函数。
**参数:**
| 参数 | 类型 | 必填 | 说明 |
| --------- | --------------------------------------------------- | ---- | ---------------------------------------- |
| source |
[
Want
](
js-apis-application-want.md
)
| 是 | Push请求发送方相关信息。 |
| template |
[
PluginComponentTemplate
](
#plugincomponenttemplate
)
| 是 | Push请求发送方相关信息请求组件模板名称。 |
| data |
[
KVObject
](
#kvobject
)
| 是 | 数据。 |
| extraData |
[
KVObject
](
#kvobject
)
| 是 | 附加数据。 |
**示例:**
```
js
function
onPushListener
(
source
,
template
,
data
,
extraData
)
{
console
.
log
(
"
onPushListener template.source=
"
+
template
.
source
)
console
.
log
(
"
onPushListener source=
"
+
JSON
.
stringify
(
source
))
console
.
log
(
"
onPushListener template=
"
+
JSON
.
stringify
(
template
))
console
.
log
(
"
onPushListener data=
"
+
JSON
.
stringify
(
data
))
console
.
log
(
"
onPushListener extraData=
"
+
JSON
.
stringify
(
extraData
))
}
```
### OnRequestEventCallback
OnRequestEventCallback = (source: Want, name: string, data: KVObject) => RequestEventResult
对应request事件的监听回调函数。
**参数:**
| 参数 | 类型 | 必填 | 说明 |
| --------- | ----------------------------------- | ---- | --------------------------- |
| source |
[
Want
](
js-apis-application-want.md
)
| 是 | request请求发送方相关信息。 |
| data |
[
KVObject
](
#kvobject
)
| 是 | 数据。 |
| extraData |
[
KVObject
](
#kvobject
)
| 是 | 附加数据。 |
**示例:**
```
js
function
onRequestListener
(
source
,
name
,
data
)
{
console
.
error
(
"
onRequestListener
"
);
console
.
log
(
"
onRequestListener source=
"
+
JSON
.
stringify
(
source
));
console
.
log
(
"
onRequestListener name=
"
+
name
);
console
.
log
(
"
onRequestListener data=
"
+
JSON
.
stringify
(
data
));
return
{
template
:
"
ets/pages/plugin.js
"
,
data
:
data
};
}
```
### push
push(param: PushParameters , callback: AsyncCallback
<
void
>
): void
组件提供者向组件使用者主动发送组件与数据。
**模型约束:**
此接口仅适用于FA模型。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------------- | ---- | ------------------------ |
| param |
[
PushParameters
](
#pushparameters
)
| 是 | 组件使用者的详细信息。 |
| callback | AsyncCallback
<
void
>
| 是 | 此次接口调用的异步回调。 |
**示例:**
```
js
pluginComponentManager
.
push
(
{
want
:
{
bundleName
:
"
com.example.provider
"
,
abilityName
:
"
com.example.provider.MainAbility
"
,
},
name
:
"
plugintemplate
"
,
data
:
{
"
key_1
"
:
"
plugin component test
"
,
"
key_2
"
:
34234
},
extraData
:
{
"
extra_str
"
:
"
this is push event
"
},
jsonPath
:
""
,
},
(
err
,
data
)
=>
{
console
.
log
(
"
push_callback: push ok!
"
);
}
)
```
### push
push(param: PushParameterForStage, callback: AsyncCallback
<
void
>
): void
组件提供者向组件使用者主动发送组件与数据。
**系统接口:**
此接口为系统接口。
**模型约束:**
此接口仅适用于Stage模型。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------------- | ---- | ------------------------ |
| param |
[
PushParameterForStage
](
#pushparameterforstage
)
| 是 | 组件使用者的详细信息。 |
| callback | AsyncCallback
<
void
>
| 是 | 此次接口调用的异步回调。 |
**示例:**
```
js
pluginComponentManager
.
push
(
{
owner
:{
bundleName
:
"
com.example.provider
"
,
abilityName
:
"
com.example.provider.MainAbility
"
},
target
:
{
bundleName
:
"
com.example.provider
"
,
abilityName
:
"
com.example.provider.MainAbility
"
,
},
name
:
"
ets/pages/plugin2.js
"
,
data
:
{
"
js
"
:
"
ets/pages/plugin.js
"
,
"
key_1
"
:
1111
,
,
},
extraData
:
{
"
extra_str
"
:
"
this is push event
"
},
jsonPath
:
""
,
},
(
err
,
data
)
=>
{
console
.
log
(
"
push_callback:err:
"
,
JSON
.
stringify
(
err
));
console
.
log
(
"
push_callback:data:
"
,
JSON
.
stringify
(
data
));
console
.
log
(
"
push_callback: push ok!
"
);
}
)
```
### request
request(param: RequestParameters, callback: AsyncCallback
<
RequestCallbackParameters
>
): void
组件使用者向组件提供者主动请求组件。
**模型约束:**
此接口仅适用于FA模型。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------- |
| param |
[
RequestParameters
](
#requestparameters
)
| 是 | 组件模板的详细请求信息。 |
| callback | AsyncCallback
<
[RequestCallbackParameters](#requestcallbackparameters)
\|
void
>
| 是 | 此次请求的异步回调,
通过回调接口的参数返回接受请求的数据。 |
**示例:**
```
js
pluginComponentManager
.
request
(
{
want
:
{
bundleName
:
"
com.example.provider
"
,
abilityName
:
"
com.example.provider.MainAbility
"
,
},
name
:
"
plugintemplate
"
,
data
:
{
"
key_1
"
:
"
plugin component test
"
,
"
key_2
"
:
1111111
},
jsonPath
:
""
,
},
(
err
,
data
)
=>
{
console
.
log
(
"
request_callback: componentTemplate.ability=
"
+
data
.
componentTemplate
.
ability
)
console
.
log
(
"
request_callback: componentTemplate.source=
"
+
data
.
componentTemplate
.
source
)
console
.
log
(
"
request_callback: data=
"
+
JSON
.
stringify
(
data
.
data
))
console
.
log
(
"
request_callback: extraData=
"
+
JSON
.
stringify
(
data
.
extraData
))
}
)
```
### request
request(param: RequestParameterForStage, callback: AsyncCallback
<
RequestCallbackParameters
>
): void
组件使用者向组件提供者主动请求组件。
**系统接口:**
此接口为系统接口。
**模型约束:**
此接口仅适用于Stage模型。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------- |
| param |
[
RequestParameterForStage
](
#requestparameterforstage
)
| 是 | 组件模板的详细请求信息。 |
| callback | AsyncCallback
<
[RequestCallbackParameters](#requestcallbackparameters)
\|
void
>
| 是 | 此次请求的异步回调,
通过回调接口的参数返回接受请求的数据。 |
**示例:**
```
js
pluginComponentManager
.
request
(
{
owner
:{
bundleName
:
"
com.example.provider
"
,
abilityName
:
"
com.example.provider.MainAbility
"
},
target
:
{
bundleName
:
"
com.example.provider
"
,
abilityName
:
"
ets/pages/plugin2.js
"
,
},
name
:
"
plugintemplate
"
,
data
:
{
"
key_1
"
:
"
myapplication plugin component test
"
,
},
jsonPath
:
""
,
},
(
err
,
data
)
=>
{
console
.
log
(
"
request_callback: componentTemplate.ability=
"
+
data
.
componentTemplate
.
ability
)
console
.
log
(
"
request_callback: componentTemplate.source=
"
+
data
.
componentTemplate
.
source
)
}
)
```
### on
on(eventType: string, callback: OnPushEventCallback | OnRequestEventCallback ): void
提供者监听"request"类型的事件,给使用者返回通过request接口主动请求的数据;使用者监听"push"类型的事件,接收提供者通过push接口主动推送的数据。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ---------------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| eventType | string | 是 | 监听的事件类型,
可选值为:"push"
、"request"。
<br/>
"push”:指组件提供者向使用者主动推送数据。
<br/>
"request”:指组件使用者向提供者主动请求数据。 |
| callback |
[
OnPushEventCallback
](
#onpusheventcallback
)
\|
[
OnRequestEventCallback
](
#onrequesteventcallback
)
| 是 | 对应监听回调,push事件对应回调类型为
[
OnPushEventCallback
](
#onpusheventcallback
)
,request事件对应回调类型为
[
OnRequestEventCallback
](
#onrequesteventcallback
)
。 |
**示例:**
```
js
pluginComponentManager
.
on
(
"
push
"
,
onPushListener
)
pluginComponentManager
.
on
(
"
request
"
,
onRequestListener
)
```
## external.json文件说明
external.json文件由开发者创建。external.json中以键值对形式存放组件名称以及对应模板路径。以组件名称name作为关键字,对应模板路径作为值。
**示例**
```
json
{
"PluginProviderExample"
:
"ets/pages/PluginProviderExample.js"
,
"plugintemplate2"
:
"ets/pages/plugintemplate2.js"
}
zh-cn/application-dev/reference/arkui-ts/ts-basic-components-plugincomponent.md
浏览文件 @
dc5bb5f4
# PluginComponent
提供外部应用组件嵌入式显示功能,即外部应用提供的UI可在本应用内显示。
提供外部应用组件嵌入式显示功能,即外部应用提供的UI可在本应用内显示。
如需通过跨进程通信实现更新,请参考
[
@ohos.pluginComponent
](
../apis/js-apis-plugincomponent.md
)
。
> **说明:**
>
> - 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
>
> - 本组件为系统接口。
## 子组件
...
...
@@ -24,154 +21,29 @@ PluginComponent(value: { template: PluginComponentTemplate, data: KVObject})
**参数:**
| 参数名 | 参数类型 | 必填 | 参数描述 |
| ------ | ------------------------------------------------------------
| ---- |
------------------------------------------------------------ |
| value | {
<br/>
template:
PluginComponentTemplate,
<br/>
data:
KVObject
<br/>
} | 是 | template:
组件模板,用于跟提供者定义的组件绑定。
<br/>
data:
传给插件组件提供者使用的数据。 |
| ------ | ------------------------------------------------------------
--------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------
------------------------------------------------------------ |
| value | {
<br/>
template:
[
PluginComponentTemplate
](
#plugincomponenttemplate类型说明
)
,
<br/>
data:
[
KVObject
](
../apis/js-apis-plugincomponent.md#kvobject
)
<br/>
} | 是 | template:
组件模板,用于跟提供者定义的组件绑定。
<br/>
data:
传给插件组件提供者使用的数据。 |
## PluginComponentTemplate类型说明
| 参数 | 类型 | 描述 |
| -------
| ------ |
----------------------- |
| -------
--- | ------ | ----
----------------------- |
| source | string | 组件模板名。 |
|
ability | string | 提供者Ability的abilityn
ame。 |
|
bundleName | string | 提供者Ability的bundleN
ame。 |
## 事件
| 名称 | 功能描述 |
| ----------------------------------------
|
---------------------------------------- |
| ----------------------------------------
--------------------------------------------------------------------------- | ------------------------------
---------------------------------------- |
| onComplete(callback:
()
=
>
void) | 组件加载完成回调。 |
| onError(callback:
(info:
{
errcode:
number,
msg:
string
})
=
>
void) | 组件加载错误回调。
<br/>
errcode:
错误码。
<br/>
msg:
错误信息。 |
## PluginComponentManager
提供配套插件组件使用的相关接口,用于给插件组件的使用者请求组件与数据,使用者发送组件模板和数据。
## 导入模块
```
import pluginComponentManager from '@ohos.plugincomponent'
```
## push
push(param: PushParameters, callback: AsyncCallback
<
void
>
): void
组件提供者向组件使用者主动发送组件与数据。
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | -------------------------------- |
| param | PushParameters | 是 | 组件使用者的详细信息,详见PushParameters参数说明。 |
| callback | AsyncCallback
<
void
>
| 是 | 此次接口调用的异步回调。 |
**PushParameters参数说明**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | -------- | ---- | --------------- |
| want | Want | 是 | 组件使用者Ability信息。 |
| name | string | 是 | 组件名称。 |
| data | KVObject | 否 | 组件数据值。 |
| extraData | KVObject | 否 | 附加数据值。 |
| jsonPath | string | 否 | 存放模板路径的external.json文件的路径。 |
**示例**
见
[
Plugin组件提供方
](
#组件提供方
)
示例。
## request
request(param: RequestParameters, callback: AsyncCallback
<
RequestCallbackParameters
>
): void
组件使用者向组件提供者主动请求组件。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ------------------------------------ |
| param | RequestParameters | 是 | 组件模板的详细请求信息,详见RequestParameters参数说明。 |
| callback | AsyncCallback<RequestCallbackParameters
\|
void
>
| 是 | 此次请求的异步回调,
通过回调接口的参数返回接受请求的数据。 |
**RequestParameters参数说明**
| 参数名 | 类型 | 必填 | 说明 |
| ---- | -------- | ---- | --------------- |
| want | Want | 是 | 组件提供者Ability信息。 |
| name | string | 是 | 请求组件名称。 |
| data | KVObject | 是 | 附加数据。 |
| jsonPath | string | 否 | 存放模板路径的external.json文件的路径。jsonPath字段不为空或者未设置的时候不触发Request通信。 |
**RequestCallbackParameters说明**
| 名称 | 类型 | 说明 |
| ----------------- | ----------------------- | ----- |
| componentTemplate | PluginComponentTemplate | 组件模板。 |
| data | KVObject | 组件数据。 |
| extraData | KVObject | 附加数据。 |
**示例**
见
[
Plugin组件使用方
](
#组件使用方
)
示例。
## on
on(eventType: string, callback: OnPushEventCallback | OnRequestEventCallback): void
提供者监听"request"类型的事件,给使用者返回通过request接口主动请求的数据;使用者监听"push"类型的事件,接收提供者通过push接口主动推送的数据。
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ---------------------------------------- | ---- | ---------------------------------------- |
| eventType | string | 是 | 监听的事件类型,
可选值为:"push"
、"request"。
<br/>
"push”:指组件提供者向使用者主动推送数据。
<br/>
"request”:指组件使用者向提供者主动请求数据。 |
| callback | OnPushEventCallback
\|
OnRequestEventCallback | 是 | 见callback事件说明。 |
**callback事件说明**
| 参数名 | 类型 | 说明 |
| ---------------------- | ---------------------------------------- | ---------------------------------------- |
| OnRequestEventCallback | (source:
Want,
<br/>
name:
string,
<br/>
data:
KVObject
)
=>RequestEventResult | 数据请求事件的回调。
<br/>
source:
组件请求方Ability信息。
<br/>
name:
请求组件名称。
<br/>
data:
附加数据。
<br/>
返回值:
请求数据结果。 |
| OnPushEventCallback | (source:
Want,
<br/>
template:
PluginComponentTemplate,
<br/>
data:
KVObject,
<br/>
extraData:
KVObject
<br/>
)
=
>
void | 接收提供者主动推送的数据。
<br/>
source:
组件提供者Ability信息。
<br/>
template:
组件模板。
<br/>
data:
组件更新数据。
<br/>
extraData:
附加数据。 |
**RequestEventResult类型说明**
| 参数 | 类型 | 说明 |
| --------- | -------- | ---------- |
| template | string | 组件名称。 |
| data | KVObject | 组件数据。 |
| extraData | KVObject | 附加数据。 |
**示例**
见
[
Plugin组件工具
](
#plugin组件工具
)
示例。
**KVObject类型说明**
| 参数 | 类型 | 说明 |
| ---- | ---------------------------------------- | ---------------------------------------- |
| key | number
\|
string
\|
boolean
\|
Array
\|
KVObject | KVObject用[key,value]来存储数据,key是string类型的,value可以是number,string,boolean,数组或者另外的一个KVObject。 |
**external.json文件说明**
external.json文件由开发者创建。external.json中以键值对形式存放组件名称以及对应模板路径。以组件名称name作为关键字,对应模板路径作为值。
**示例**
见
[
external.json
](
#externaljson
)
示例。
## 示例
### 组件使用方
```
ts
//PluginUserExample.ets
import
plugin
from
"
plugin_component.js
"
...
...
@@ -180,9 +52,9 @@ import plugin from "plugin_component.js"
@
Component
struct
PluginUserExample
{
@
StorageLink
(
"
plugincount
"
)
plugincount
:
Object
[]
=
[
{
source
:
'
plugincomponent1
'
,
ability
:
'
com.example.plugin
'
},
{
source
:
'
plugintemplate
'
,
ability
:
'
com.example.myapplication
'
},
{
source
:
'
plugintemplate
'
,
ability
:
'
com.example.myapplication
'
}]
{
source
:
'
plugincomponent1
'
,
bundleName
:
'
com.example.plugin
'
},
{
source
:
'
plugintemplate
'
,
bundleName
:
'
com.example.myapplication
'
},
{
source
:
'
plugintemplate
'
,
bundleName
:
'
com.example.myapplication
'
}]
build
()
{
Flex
({
direction
:
FlexDirection
.
Column
,
alignItems
:
ItemAlign
.
Center
,
justifyContent
:
FlexAlign
.
Center
})
{
...
...
@@ -209,7 +81,7 @@ struct PluginUserExample {
})
ForEach
(
this
.
plugincount
,
item
=>
{
PluginComponent
({
template
:
{
source
:
'
plugincomponent1
'
,
ability
:
'
com.example.plugin
'
},
template
:
{
source
:
'
PluginProviderExample
'
,
bundleName
:
'
com.example.plugin
'
},
data
:
{
'
countDownStartValue
'
:
'
new countDownStartValue
'
}
}).
size
({
width
:
500
,
height
:
100
})
.
onComplete
(()
=>
{
...
...
@@ -270,7 +142,7 @@ struct PluginProviderExample {
### Plugin组件工具
#### FA模型
```
js
//plugin_component.js
import
pluginComponentManager
from
'
@ohos.pluginComponent
'
...
...
@@ -308,10 +180,10 @@ export default {
pluginComponentManager
.
push
(
{
want
:
{
bundleName
:
"
com.example.
myapplicatio
n
"
,
abilityName
:
"
com.example.myapplication.
MainAbility
"
,
bundleName
:
"
com.example.
plugi
n
"
,
abilityName
:
"
com.example.myapplication.
PluginProviderExample
"
,
},
name
:
"
plugintemplat
e
"
,
name
:
"
PluginProviderExampl
e
"
,
data
:
{
"
key_1
"
:
"
plugin component test
"
,
"
key_2
"
:
34234
...
...
@@ -330,10 +202,10 @@ export default {
// 组件使用方主动发送事件
pluginComponentManager
.
request
({
want
:
{
bundleName
:
"
com.example.
myapplicatio
n
"
,
abilityName
:
"
com.example.myapplication.
MainAbility
"
,
bundleName
:
"
com.example.
plugi
n
"
,
abilityName
:
"
com.example.myapplication.
PluginProviderExample
"
,
},
name
:
"
plugintemplat
e
"
,
name
:
"
PluginProviderExampl
e
"
,
data
:
{
"
key_1
"
:
"
plugin component test
"
,
"
key_2
"
:
34234
...
...
@@ -358,10 +230,98 @@ export default {
}
```
#### Stage模型
```
js
//plugin_component.js
import
pluginComponentManager
from
'
@ohos.pluginComponent
'
function
onPushListener
(
source
,
template
,
data
,
extraData
)
{
console
.
log
(
"
onPushListener template.source=
"
+
template
.
source
)
var
jsonObject
=
JSON
.
parse
(
data
.
componentTemplate
.
source
)
console
.
log
(
"
request_callback1:source json object
"
+
jsonObject
)
var
jsonArry
=
jsonObject
.
ExternalComponent
for
(
var
i
in
jsonArry
)
{
console
.
log
(
jsonArry
[
i
])
}
console
.
log
(
"
onPushListener:source json object
"
+
jsonObject
)
console
.
log
(
"
onPushListener:source json string
"
+
JSON
.
stringify
(
jsonObject
))
console
.
log
(
"
onPushListener template.ability=
"
+
template
.
ability
)
console
.
log
(
"
onPushListener data=
"
+
JSON
.
stringify
(
data
))
console
.
log
(
"
onPushListener extraData=
"
+
JSON
.
stringify
(
extraData
))
}
### external.json
```
json
function
onRequestListener
(
source
,
name
,
data
)
{
"plugintemplate"
:
"ets/pages/plugintemplate.js"
,
"plugintemplate2"
:
"ets/pages/plugintemplate2.js"
console
.
log
(
"
onRequestListener name=
"
+
name
);
console
.
log
(
"
onRequestListener data=
"
+
JSON
.
stringify
(
data
));
return
{
template
:
"
plugintemplate
"
,
data
:
data
};
}
export
default
{
//register listener
onListener
()
{
pluginComponentManager
.
on
(
"
push
"
,
onPushListener
)
pluginComponentManager
.
on
(
"
request
"
,
onRequestListener
)
},
Push
()
{
// 组件提供方主动发送事件
pluginComponentManager
.
push
(
{
owner
:
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
com.example.myapplication.MainAbility
"
,
},
target
:
{
bundleName
:
"
com.example.plugin
"
,
abilityName
:
"
com.example.myapplication.PluginProviderExample
"
,
},
name
:
"
PluginProviderExample
"
,
data
:
{
"
key_1
"
:
"
plugin component test
"
,
"
key_2
"
:
34234
},
extraData
:
{
"
extra_str
"
:
"
this is push event
"
},
jsonPath
:
""
,
},
(
err
,
data
)
=>
{
console
.
log
(
"
push_callback: push ok!
"
);
}
)
},
Request
()
{
// 组件使用方主动发送事件
pluginComponentManager
.
request
({
owner
:
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
com.example.myapplication.MainAbility
"
,
},
target
:
{
bundleName
:
"
com.example.plugin
"
,
abilityName
:
"
com.example.myapplication.PluginProviderExample
"
,
},
name
:
"
PluginProviderExample
"
,
data
:
{
"
key_1
"
:
"
plugin component test
"
,
"
key_2
"
:
34234
},
jsonPath
:
""
,
},
(
err
,
data
)
=>
{
console
.
log
(
"
request_callback: componentTemplate.ability=
"
+
data
.
componentTemplate
.
ability
)
console
.
log
(
"
request_callback: componentTemplate.source=
"
+
data
.
componentTemplate
.
source
)
var
jsonObject
=
JSON
.
parse
(
data
.
componentTemplate
.
source
)
console
.
log
(
"
request_callback:source json object
"
+
jsonObject
)
var
jsonArry
=
jsonObject
.
ExternalComponent
for
(
var
i
in
jsonArry
)
{
console
.
log
(
jsonArry
[
i
])
}
console
.
log
(
"
request_callback:source json string
"
+
JSON
.
stringify
(
jsonObject
))
console
.
log
(
"
request_callback: data=
"
+
JSON
.
stringify
(
data
.
data
))
console
.
log
(
"
request_callback: extraData=
"
+
JSON
.
stringify
(
data
.
extraData
))
}
)
}
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录