angular-schema-form 中的schema 和form 有什么关系?

What's the relation between schema and form in angular-schema-form?

在我的 angular 项目中,我需要动态创建一些表单。我为此做了一些谷歌搜索,找到了一个模块 angular-schema-form。看来这正是我想要的,但问题是我不明白如何保持模式和形式。模式和形式之间的关系是什么?

我阅读了 form types 的文档,但对我帮助不大。我不想像 HIT 和 TRY 那样使用这个模块。我首先想了解一下概念:模式和形式之间的关系是什么?

尝试解决基本问题:

What is the relation between schema and form?

简单来说,也许这样想是最容易的。要创建表单,您需要三个 JSON:

  • JSON 包含通过您的表单呈现的实际数据。这是model.

  • JSONschema。这描述了model的结构。举一个关于 modelschema 之间关系的极其简单的例子,想象一下你的实际数据(你的 model)描述了一个人的性别和年龄,比如 {sex: female, age: 32}. schema 的作用是描述模型的结构,所以在这种情况下它会描述应该有一个 sex 属性 的字符串类型,其值只能是 malefemale,还有一个age属性,依此类推。为了能够显示使用您的 model 数据填充的表单,它只需要首先使用 schema 来构建表单。

  • JSON form 是我认为 可选 的东西。您必须拥有它,但它可以简单地包含 "*",它告诉 angular-schema-form 仅根据模式自动构建表单。在这种情况下,库将完全基于架构并使用文档中描述的默认设置来构建表单。但是,如果您愿意,您可以使用 form 对象来描述您希望表单的结构。

这是一个非常粗略和非常简单的示例,说明 form 对象为您提供的灵活性:

以上面的 person 对象为例,如果您不使用 form 对象(即它只包含 "*"),那么 angular-schema-form 将构建你是一个基于模式的表格。因此,它将具有 sexage 的输入字段。这些字段可能符合也可能不符合格式、顺序或具有您想要的其他属性。然后,您可以选择使用 form 对象来指示 angular-schema-form 您希望它如何构建表单。例如,您可以使用 form 来使表单只包含 age 而不是 sex.

的字段

所以 model 是您的数据,schema 描述了该数据的结构。简单来说,form 为您的表单提供了更深一层的映射和配置,覆盖了仅基于 schema 创建的默认表单。

有帮助吗?

我和你有同样的问题,而且和你一样,没有人能够简单地理解我的担忧。 我不是 AngualrJS 大师,也不是 JSON 大师,所以我在理解手册时遇到了很多困难,而且我发现示例也很混乱(对于像我这样的菜鸟)。

所以在多次尝试和错误之后,这就是我的理解:

form<FORM> 呈现时的结构。

schema就是这个link严格定义的数据结构: https://json-schema.org/understanding-json-schema/about.html

它与旧的 XML 模式 dtd 有很多相似之处。 当您定义模式时,它将定义数据在模型上的呈现方式。 因此,如果您像这样定义架构

{
        "type" : "object",
        "properties" : {
            "contact" : {
                "title" : "$Contact",
                "type" : "number"
            }
        }
    }

模型将以数值形式呈现联系人。如果您将类型设置为字符串,您将得到一个以字符串格式呈现的模型,依此类推。