gpt4 book ai didi

angularjs - Angular Schema Form 如何工作?

转载 作者:行者123 更新时间:2023-12-03 03:44:41 27 4
gpt4 key购买 nike

为什么Angular Schema Form有一个 json 表单和一个独立的 json 模式吗?表单中的某些属性似乎可以在架构中,反之亦然。例如,在 schemaform.io 网站上的简单示例中,我们的表单如下:

[
"name",
"email",
{
"key": "comment",
"type": "textarea",
"placeholder": "Make a comment"
},
{
"type": "submit",
"style": "btn-info",
"title": "OK"
}
]

架构为:

{
"type": "object",
"title": "Comment",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"email": {
"title": "Email",
"type": "string",
"pattern": "^\\S+@\\S+$",
"description": "Email will be used for evil."
},
"comment": {
"title": "Comment",
"type": "string",
"maxLength": 20,
"validationMessage": "Don't be greedy!"
}
},
"required": [
"name",
"email",
"comment"
]
}

似乎在架构的 email 属性中,titledescription 也可以在表单定义中在架构中。有人可以解释一下形式和模式的含义以及为什么它们是分开的吗?

最佳答案

JSON 架构

JSON 架构是一项 IETF 标准(如 JSON-Schema docs 中的链接)

JSON Schema Form org(ASF 所属)无法自行更改 JSON Schema 标准。在此阶段,JSON 架构仅被设计为模型/验证/超媒体定义格式

JSON Schema Form 组织正在与 JSON Schema 组织进行直接讨论,我现在也是该组织的一部分,因为我们希望最终定义一个 JSON Schema UI 标准,这可能会结束从简单地作为一种确保 future 不会发生属性(property)冲突的方法或更详细的标准。

目前,Angular Schema Form 从 jsonForm 演变而来的方式确实造成了一些与类似术语的混淆,这些术语不能在格式和格式变体之间以相同的方式使用,例如使用点符号键或 readOnly 与 readonly。

用户界面架构

许多使用 JSON Schema 的组织的需求是提供一个用于编辑 schema 定义的数据格式的 UI,因此 UI Schema 定义了模型应如何呈现。它允许覆盖架构值,因此架构中的大多数(如果不是全部)值都可以更改,而且还根据框架内定义的模板添加其他类型(将来可能会更改为不同的术语,例如小部件)。

UI 架构还使用数组来确保字段的顺序符合预期,同时提供仅定义一个键以仅根据 JSON 架构定义中找到的数据生成表单字段的功能。如果根本不需要覆盖,您还可以使用通配符和省略号来生成表单元素,甚至无需使用键。

关注点分离

不尝试将两者结合起来的原因是为了分离关注点,UI Schema 本质上充当一种 View Controller 。许多企业应用程序将在许多不同的 View 中使用相同的数据,例如,当管理员比普通员工拥有更多编辑数据的权限时。每次都复制数据模型,只复制 View 是没有意义的。

对于一个非常基本的表单来说,这似乎有点大材小用,但您永远不知道需求何时会扩展,并且何时会添加新功能,从而需要新的数据 View 。

通常还需要在浏览器中使用在模型中找不到的表单中定义的属性来支持状态信息。

披露:在撰写本文时,我是 Angular Schema Form 的维护者。

关于angularjs - Angular Schema Form 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com