8

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

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

4

2 回答 2

11

要尝试解决基本问题:

图式和形式的关系是什么?

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

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

  • 的 JSON schema。这描述了model. 举一个关于model和之间关系的极其简单的例子schema,假设您的实际数据(您的model)根据性别和年龄来描述一个人,例如{sex: female, age: 32}。的作用schema是描述模型的结构,所以在这种情况下,它会描述应该有一个sex字符串类型的属性,其值只能是maleor female,并且有一个age属性,等等。为了能够呈现使用您的model数据填充的表单,它只需要schema首先构建表单。

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

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

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

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

这有帮助吗?

于 2015-05-05T11:01:23.443 回答
0

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

因此,经过多次尝试和错误,这就是我所理解的:

表单<FORM>渲染时将具有的结构。

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

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

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

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

于 2019-07-23T08:04:36.930 回答