"要素表单"微件显示要素的属性。此微件根据要素的属性以及字段是否允许编辑来渲染输入字段。您可以配置字段分组以帮助显示和组织表单数据。表单上设置的所有属性和字段配置都通过其 template 进行处理。
将此微件与 FeatureLayer.applyEdits, 结合使用,使最终用户能够更新指定可编辑要素图层上的要素属性。
通过 FieldElement(s) 或窗体模板elements的 GroupElement(s) 设置任何字段配置。
已知限制
"要素表单"微件尚未与 3.x AttributeInspector 微件中提供的功能完全等效。微件中提供的功能完全等效。虽然,编辑附件可以使用 Editor 微件。
有关获得对widget样式的完全控制的信息,请参阅样式主题。
- 示例:
const featureForm = new FeatureForm({
container: "formDiv",
feature: graphic,
formTemplate: template
});
构造函数
属性列表
属性 | 类型 | 描述 | 类 | |
---|---|---|---|---|
String|HTMLElement | 更多信息 包含widget的DOM元素的ID或者节点 | 更多信息 | Widget | |
String | 更多信息 类名。 | 更多信息 | Accessor | |
Graphic | 更多信息 包含可编辑属性的关联要素。 | 更多信息 | FeatureForm | |
FormTemplate | 更多信息 用于表单的关联 template | 更多信息 | FeatureForm | |
String | 更多信息 定义如何向用户显示组。 | 更多信息 | FeatureForm | |
Number | 更多信息 指示要用于表单 title 的标题 级别 | 更多信息 | FeatureForm | |
String | 更多信息 创建部件时分配给部件的唯一ID。 | 更多信息 | Widget | |
String | 更多信息 widget 默认的label | 更多信息 | FeatureForm | |
FeatureLayer | 更多信息 包含可编辑要素属性的图层。 | 更多信息 | FeatureForm | |
FeatureFormViewModel | 更多信息 widget的视图模型。 | 更多信息 | FeatureForm | |
Boolean | 更多信息 是否显示widget | 更多信息 | Widget |
属性详细说明
-
-
包含widget的DOM元素的ID或者节点,此属性只能设置一次。以下示例都是使用小部件时的有效用例。
示例代码:// 在运行时创建HTML div元素,并将其设置为小部件的容器 const basemapGallery = new BasemapGallery({ view: view, container: document.createElement("div") }); // 添加widget 在 view的右上角 view.ui.add(basemapGallery, { position: "top-right" });
// 创建 HTML div 元素 并且设置为widget的容器 const basemapGallery = new BasemapGallery({ view: view, container: basemapGalleryDiv }); // 添加widget 在 view的右上角 view.ui.add(basemapGallery, { position: "top-right" }); // HTML 标签 <body> <div id="viewDiv"></div> <div id="basemapGalleryDiv"></div> </body>
// 在添加到视图的UI时指定widget const basemapGallery = new BasemapGallery({ view: view }); // 添加widget 在 view的右上角 view.ui.add(basemapGallery, { position: "top-right" });
-
类名。类的名称声明格式为
geoscene.folder.className
。
-
feature Graphic
-
包含可编辑属性的关联要素。 访问它的常用方法是通过 MapView 或 SceneView's
hitTest()
方法.示例代码:// 检查用户是否单击了事件功能 view.on("click", function(event) { view.hitTest(event).then(function(response) { // 在表单中显示要素的属性 if (response.results[0].graphic && response.results[0].graphic.layer.id == "incidentsLayer") { formVM.feature = result.results[0].graphic } }); });
-
formTemplate FormTemplateautocast起始版本: GeoScene API for JavaScript 4.22
-
用于表单的关联 template
在 formTemplate 中,您可以配置表单的显示方式,并设置表单的任何关联属性,例如标题、说明、字段元素等。
示例代码:// 创建表单模板并传入元素 const formTemplate = new FormTemplate({ title: "Inspector report", description: "Enter all relevant information below", elements: [groupElement] // 在模板上添加所有元素 }); // 添加带有分组字段的新要素表单 const form = new FeatureForm({ container: "form", groupDisplay: "sequential", // 一次只显示一个组 formTemplate: formTemplate // 将其设置为上面创建的模板 });
-
groupDisplay String起始版本: GeoScene API for JavaScript 4.22
-
定义如何向用户显示组。
可选值
值 描述 all 所有组都将展开。 sequential 一次将展开一个组。 可选值:"all"|"sequential"
- 默认值:all
- 示例:
-
headingLevel Number起始版本: GeoScene API for JavaScript 4.22
-
指示要用于表单 title 级别。 默认情况下,标题呈现为级别 2 标题 (例如
<h2>Form title</h2>
). I此外,组元素标签默认为级别 3 标题 (例如<h3>Group element label</h3>
). 根据小部件在应用程序中的位置,您可能需要调整此标题以获得正确的语义。这对于满足辅助功能标准非常重要。- 默认值:2
- 示例:
示例代码:// form title will render as an <h3> // group element labels will render as an <h4> featureForm.headingLevel = 3;
-
创建部件时分配给部件的唯一ID。 如果不是由开发人员设置的,它将默认为容器ID 或者如果没有容器ID,那么它将自动生成
-
label String
-
widget 默认的label
-
layer FeatureLayer
-
包含可编辑要素属性的图层。如果未指定此图层,则它与 graphic's layer 相同。
示例代码:const form = new FeatureForm({ container: "formDiv", // HTML div layer: featureLayer // Feature layer });
-
viewModel FeatureFormViewModelautocast
-
widget的视图模型。 这是一个包含控制此小部件行为的所有逻辑(属性和方法)的类。请参阅 FeatureFormViewModel 类以访问小组件上的所有属性和方法。
-
是否显示widget
如果为
false
, 小部件将不再呈现在web文档中。这可能会影响文档中其他元素或小部件的布局。例如,如果此小部件是与 view UI, 右上角关联的三个小部件中的第一个,那么当此小部件不可见时,其他小部件将重新定位。 有关更多信息,请参阅CSS display 值"none"
.- 默认值:true
示例代码:// 在view中隐藏widget widget.visible = false;
方法列表
属性 | 返回值类型 | 描述 | 类 | |
---|---|---|---|---|
String | 更多信息 用于为widgets的 | 更多信息 | Widget | |
更多信息 销毁widget实例。 | 更多信息 | Widget | ||
Object | 更多信息 返回所有字段值,无论它们是否已更新。 | 更多信息 | FeatureForm | |
Boolean | 更多信息
| 更多信息 | Widget | |
Boolean | 更多信息
| 更多信息 | Widget | |
Boolean | 更多信息
| 更多信息 | Widget | |
Object | 更多信息 在实例上注册事件处理程序。 | 更多信息 | Widget | |
更多信息 Widget teardown helper. | 更多信息 | Widget | ||
更多信息 这种方法主要由开发人员在实现自定义widget时使用。 | 更多信息 | Widget | ||
Object | 更多信息 这种方法主要由开发人员在实现自定义widget时使用。 | 更多信息 | Widget | |
更多信息 立即将widget渲染到DOM。 | 更多信息 | Widget | ||
更多信息 这种方法主要由开发人员在实现自定义widget时使用。 | 更多信息 | Widget | ||
更多信息 Fires the submit event. | 更多信息 | FeatureForm | ||
Promise | 更多信息
| 更多信息 | Widget |
方法详细说明
-
用于为widget的类属性构建值的实用方法
undefinedclass 属性
. 这有助于简化CSS类设置.参数:repeatable class 类名称
返回值:类型 描述 String The computed class name. 示例代码:// .tsx语法显示在渲染widget时如何设置CSS classs . render() { const dynamicIconClasses = { [CSS.myIcon]: this.showIcon, [CSS.greyIcon]: !this.showIcon }; return ( <div class={classes(CSS.root, CSS.mixin, dynamicIconClasses)} /> ); }
-
destroy()inherited
-
销毁widget实例。
-
getValues(){Object}
-
返回所有字段值,无论它们是否已更新。
返回值:类型 描述 Object 字段名称及其值的键值对的对象。 示例代码:function updateFeature() { // 获取更新的字段值 const attributes = form.getValues(); // 在featurelayer中调用applyEdits layer.applyEdits({ // 传入更新的字段值 updateFeatures: [{ attributes }] }); }
-
起始版本: GeoScene API for JavaScript 4.22
-
isFulfilled()
可用于验证创建类的实例是否已完成(无论成功或失败)。 如果已完成,将会返回true
。返回值:类型 描述 Boolean 指示创建类的实例是否已完成(无论成功或失败)。
-
起始版本: GeoScene API for JavaScript 4.22
-
isRejected()
可用于验证创建类的实例是否失败。 如果失败, 将会返回true
。返回值:类型 描述 Boolean 指示是否已拒绝创建类的实例。
-
起始版本: GeoScene API for JavaScript 4.22
-
isResolved()
可用于验证创建类的实例是否成功。 如果成功, 将会返回true
。返回值:类型 描述 Boolean 指示是否已解析创建类的实例。
-
在实例上注册事件处理程序。调用此方法将事件与侦听器挂钩
参数:要监听的event 或者事件数组
listener Function事件触发时要调用的函数
返回值:类型 描述 Object 返回一个 remove()
方法的事件处理程序,该方法用以停止侦听事件。属性 类型 描述 remove Function 当被调用时,从事件中移除监听器。 示例代码:view.on("click", function(event){ // event是事件触发后返回的事件句柄。 console.log(event.mapPoint); });
-
own(handles)inherited
-
Widget teardown helper. 当widget被销毁时,添加到它的任何句柄都将被自动删除。
参数:handles WatchHandle|WatchHandle[]widget销毁后标记为删除的句柄。
-
postInitialize()inherited
-
这种方法主要由开发人员在实现自定义widget时使用。 在widget准备好后执行。
-
这种方法主要由开发人员在实现自定义widget时使用。 它必须由子类实现以进行渲染。
返回值:类型 描述 Object 渲染虚拟节点。
-
renderNow()inherited
-
立即将widget渲染到DOM。
-
scheduleRender()inherited
-
这种方法主要由开发人员在实现自定义widget时使用。 计划小部件渲染。此方法对于影响UI的更改非常有用。
-
submit()
-
触发 submit 事件。
示例代码://监听事件 // 一旦启动,更新该功能 form.on("submit", updateFeature); // 当 DOM's button (btnUpdate) 被点击 // 执行'submit()'方法 on(dom.byId("btnUpdate"), "click", form.submit());
-
起始版本: GeoScene API for JavaScript 4.22
-
when()
创建类的实例后,会被执行一次。该方法接受两个参数:callback
函数和errback
函数。callback
在类的实例加载时执行。 如果类的实例无法加载,则执行errback
。参数:callback Functionoptional当 Promise 成功时,该函数将被调用。
errback Functionoptional当 Promise 失败时,该函数将被调用。
返回值:类型 描述 Promise 返回回调结果的新promise,可用于 chain additional functions. 示例代码:// 尽管此示例使用 BasemapGallery widget,但任何作为 Promise 的类实例都可以以相同的方式使用 when() let bmGallery = new BasemapGallery(); bmGallery.when(function(){ // 当 Promise resolved 时,函数将被执行 }, function(error){ // 当 Promise 通过 rejected 抛错时,这个函数将被执行 });
Event Overview
属性 | 类型 | 描述 | 类 | |
---|---|---|---|---|
{valid: String[],invalid: String[],values: Object} |
更多信息
在调用 submit() 方法时触发 |
更多信息 | FeatureForm | |
{layer: FeatureLayer,feature: Graphic,fieldName: String,value: Number,String,null,valid: Boolean} |
更多信息
在更新字段值时触发。. |
更多信息 | FeatureForm |
Event Details
-
submit
-
在调用 submit() 方法时触发。 调用 FeatureLayer.applyEdits() 方法来更新要素的属性。
- 属性:
-
有效的字段名称。
无效的字段名称。
values Object字段名称的键值对及其所有值的对象,无论它们是否已更新。
- 示例:
示例代码:// Listen to the feature form's submit event. featureForm.on("submit", function(){ if (editFeature) { // Grab updated attributes from the form. const updated = featureForm.getValues(); // Loop through updated attributes and assign // the updated values to feature attributes. Object.keys(updated).forEach(function(name) { editFeature.attributes[name] = updated[name]; }); // Setup the applyEdits parameter with updates. const edits = { updateFeatures: [editFeature] }; applyEdits(edits); } });
-
value-change
-
Fires when a field value is updated.
- 属性:
-
layer FeatureLayer
关联的要素图层。
feature Graphic关联的要素
fieldName String更新的字段。
更新的字段值。
valid Boolean如果为 true,则该值符合字段的定义。