我正在尝试创建一个布局完全由数据驱动的表单。
示例数据源:
{
title : "Form Test",
fields : [{
name : "FieldA",
type : "string",
value : "initial value"
}, {
name : "FieldB",
type : "selection",
options : ["1", "2", "3"],
value : "2"
}, {
name : "FieldC",
type : "struct",
value :
[{
name : "FieldC1",
type : "string",
value : "initial value"
}, {
name : "FieldC2",
type : "string",
value : "initial value"
}
]
}
]
}
我认为可以使用 ng-repeat 和 ng-switch 来根据“类型”选择表单元素,但是当我到达“FieldC”时,当我递归地执行此操作时我会卡住。
<span ng-switch on="field.type">
<div ng-switch-when="string">STRING: {{field.value}}</div>
<div ng-switch-when="selection">SELECTION: {{field.value}}</div>
<div ng-switch-when="struct">STRUCT: ????</div>
<div ng-switch-default>DEFAULT:{{field.value}}</div>
</span>
本质上,我想要一种方法,当我遇到“结构”时,它递归地将 ng-switch 应用于结构字段?有什么方法可以“引用”模板,以便可以在同一页面的多个位置使用它?对模板“部分”的支持似乎需要通过路由在服务器端进行协调,这在此处似乎有些过分。这是我需要开始深入研究创建自己的指令的地方吗?
编辑我只是偶然发现了这个看起来它有很大的机会做我想做的事情(我还没有正确测试它),这是在正确的方向吗?