new Form(viewGroup)
表单处理工具类;可快速将容器中的表单组件的名称和值组装为 JSON 数据,也支持通过修改 JSON 将值反填回组件中;
此工具还支持 JSON 整体变化事件和 JSON 中单条数据变化事件
通过 addChangeListener 可监听到的事件:
事件名 | 事件对象 | 描述 |
---|---|---|
jsonChange |
{ kind: 'jsonChange', // 事件类型 oldValue: oldValue, // 旧值 newValue: newValue, // 新值 form: form, 表单工具类实例 fromSetter: true|false // 是否是手动调用 setJSON 导致此事件被派发;如果为 false,说明是切换 viewGroup 或增删表单组件导致此事件被派发 } |
JSON 数据整体变化事件(比如绑定了新的 viewGroup) |
formDataValueChange |
{ kind: 'formDataValueChange', // 事件类型 view: view, // 表单组件实例 name: name, // 表单组件的名称 oldValue: oldValue, // 旧值 newValue: newValue, // 新值 form: form, 表单工具类实例 fromSetter: true|false // 是否是手动调用 setItem 导致此事件被派发;如果为 false,说明是组件值变化导致此事件被派发 } |
JSON 中单条数据值变化事件 |
Parameters:
Name | Type | Description |
---|---|---|
viewGroup |
ht.ui.ViewGroup | 容器对象 |
Methods
-
addChangeListener(listener, scope, ahead)
-
增加数据变化监听器
Parameters:
Name Type Argument Description listener
function 监听器函数
scope
Object <optional>
监听器函数域
ahead
Boolean <optional>
是否将当前监听器插入到监听器列表开头
-
getFormDataNames() → {Array}
-
获取所有的表单组件名称
Returns:
- Type
- Array
-
getFormView(name) → {ht.ui.View|Array}
-
根据名称获取对应的表单组件
Parameters:
Name Type Description name
String 表单组件的 formDataName
Returns:
组件
- Type
- ht.ui.View | Array
-
getFormViewMap() → {Object}
-
获取 表单组件名称-表单组件 映射表
Returns:
组件
- Type
- Object
-
getItem(name) → {Object}
-
根据表单组件的名称获取对应的数据值
Parameters:
Name Type Description name
String 表单组件的 formDataName
Returns:
值
- Type
- Object
-
getJSON() → {Object}
-
获取由表单组件的名称和值组装成的 JSON 数据
Returns:
JSON 对象
- Type
- Object
-
getViewGroup() → {ht.ui.ViewGroup}
-
获取容器对象
Returns:
容器对象
- Type
- ht.ui.ViewGroup
-
isFormDataNameWarnDisabled() → {Boolean}
-
获取是否禁用了 formDataName 重复检测
Returns:
是否禁用
- Type
- Boolean
-
removeChangeListener(listener, scope)
-
删除数据变化监听器
Parameters:
Name Type Argument Description listener
function 监听器函数
scope
Object <optional>
监听器函数域
-
setFormDataNameWarnDisabled(disabled)
-
设置是否禁用 formDataName 重复检测,默认为 flase;
除 ToggleButton、CheckBox、RadioButton 之外其它组件的 formDataName 属性如果重复,浏览器会在控制台打印警告, 如果要关闭警告,请调用此 API 并将参数设为 trueParameters:
Name Type Description disabled
Boolean 是否禁用
-
setItem(name, value)
-
设置 JSON 数据中表单组件的名称对应的值,这会同步修改组件的值
Parameters:
Name Type Description name
String 表单组件的 formDataName
value
Object 值
-
setJSON(json)
-
设置 JSON 数据,同步更新容器中的表单组件
Parameters:
Name Type Description json
Object JSON 对象
-
setViewGroup(viewGroup)
-
设置容器对象;递归遍历此容器对象并获取表单组件,为表单组件增加属性变化监听器以及时更新 JSON
Parameters:
Name Type Description viewGroup
ht.ui.ViewGroup 容器对象