基本概念
组件(Widgets) API 是微搭运行框架内置的一种核心 API,它在微搭的作用,类似 Web的 DOM API,可以快捷去获取或操作组件的属性。
使用场景
场景1:读取修改组件属性
例如单行输入组件,当想读取或修改用户当前已输入的值时,微搭可以通过 Widgets API 读取和修改输入值:
::: js
page.widgets.idInput.value = ‘xxx’ // 修改当前输入框的值
:::
其中 idInput 是单行输入组件的组件 ID。
组件 ID 的获取方式,如下图组件配置面板所示:
场景2:主动调用组件 API
例如 Form 表单容器组件,常规需要添加一个<button type="submit">Submit</button>
具备提交属性的按钮,才可以触发 form 的 onSubmit 事件。而利用 Widgets API,则可以通过任何组件在任何时刻主动提交表单内容:
::: JS
$page.widgets.idForm.submit() // 主动校验并提交表单
:::-
API 详细用法
自定义属性
如下文本组件 id17 的属性,微搭将自动生成内置对象 $page.widgets.id17
,可通过此对象读取该组件的所有属性,属性 Key 可参见 console 面板:
快速修改/读取组件的某一属性:
::: JS
$page.widgets.id17. =
:::
内置属性
各组件除了本身的属性,还包含以下内置公共属性:
属性名 | 读写性 | 说明 |
---|---|---|
style | 可写 | 设置 CSS 组件的样式,与 H5 的 DOM API 一致,如修改组件字体的颜色:$page.widgets.id17.style.color='red' |
classList | 可写 | 组件是 CSS class 列表,类似 H5 的 DOM API,但类型是数组,如新增一个 class:$page.widgets.id17.classList.push('active') |
parent | 只读 | 返回组件的父节点 widget 对象 |
children | 只读 | 组件的子节点 widget 数组,包含所有 slot。注意:children 的顺序与组件实际顺序不保证一致 |
内置方法
方法名 | 说明 | 类型 |
---|---|---|
findWidgets | 用于筛选并获取子节点 widgets,第一个参数是函数方法,可递归向下查找所有符合条件的 widgets 节点,第二参数是是否包含已经被 IF 隐藏的 widgets 节点 | (fn: (node: Widget) => boolean, isGetHiddenWidgets: boolean) => Widgets |
getWidgetsByType | 用于筛选并获取子节点 widgets,第一个参数是 widgetType,第二参数是是否包含已经被 IF 隐藏的 widgets 节点 | (widgetType: string, isGetHiddenWidgets: boolean) => Widgets |
getDom | 返回当前组件的 Dom 节点对象 | () => Promise<Dom> |
getConfig | 返回当前组件的配置 | () => any |
on | 监听方法,第一个参数是事件名(类型),第二个参数是监听函数方法 | (type: string, fn: Function) => void |
off | 取消监听方法,第一个参数是事件名(类型),第二个参数是监听函数方法 | (type: string, fn: Function) => void |
获取和设置组件样式的示例
例如获取一个文本组件的内容,以及设置该文本的样式(例如文字颜色),参见下图所示: