在我的角度项目中,我需要动态创建一些表单。我为此做了一些谷歌搜索,发现了一个模块angular-schema-form。看来这正是我想要的,但问题是我不明白如何保持模式和形式。图式和形式的关系是什么?
我从表单类型中阅读了文档,但这对我帮助不大。我不想像 HIT 和 TRY 那样使用这个模块。我首先要了解这个概念:模式和形式之间的关系是什么?
在我的角度项目中,我需要动态创建一些表单。我为此做了一些谷歌搜索,发现了一个模块angular-schema-form。看来这正是我想要的,但问题是我不明白如何保持模式和形式。图式和形式的关系是什么?
我从表单类型中阅读了文档,但这对我帮助不大。我不想像 HIT 和 TRY 那样使用这个模块。我首先要了解这个概念:模式和形式之间的关系是什么?
要尝试解决基本问题:
图式和形式的关系是什么?
简单来说,也许最容易这样想。要创建表单,您需要三段 JSON:
包含通过表单呈现的实际数据的 JSON。这是model
.
的 JSON schema
。这描述了model
. 举一个关于model
和之间关系的极其简单的例子schema
,假设您的实际数据(您的model
)根据性别和年龄来描述一个人,例如{sex: female, age: 32}
。的作用schema
是描述模型的结构,所以在这种情况下,它会描述应该有一个sex
字符串类型的属性,其值只能是male
or 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
单独创建的默认表单。
这有帮助吗?
我有你同样的问题,也和你一样,没有人能够简单地理解我的担忧。我不是 AngualrJS 专家,也不是 JSON 专家,所以我在理解手册时遇到了很多困难,而且我发现这些示例也令人困惑(对于像我这样的菜鸟)。
因此,经过多次尝试和错误,这就是我所理解的:
表单是<FORM>
渲染时将具有的结构。
schema是这个链接严格定义的数据结构: https ://json-schema.org/understanding-json-schema/about.html
它与旧的 XML 模式 dtd 有很多相似之处。当您定义模式时,它将定义数据在模型上的呈现方式。因此,如果您像这样定义架构
{
"type" : "object",
"properties" : {
"contact" : {
"title" : "$Contact",
"type" : "number"
}
}
}
模型将像数值一样呈现联系人。如果您将类型设置为字符串,您将拥有一个以字符串格式呈现的模型,依此类推。