无论要尝试创建的指令如何,您遇到的第一个问题是在具有表单元素的表单中使用ng-repeat。ng-repeat如何创建新范围可能很棘手。
我也建议不要在部分模板中使用ngSwitch而不是使用element.html 。
<div class="form-row" data-ng-switch on="field.type">
<div data-ng-switch-when="text">
{{ field.title }}: <input type="text" data-ng-model="field.value" />
</div>
<div data-ng-switch-when="textarea">
{{ field.title }}: <textarea data-ng-model="field.value"></textarea>
</div>
</div>
由于ng- repeat,这仍然给您带来在子范围内修改表单元素的问题,为此,我建议在项目更改后,对每个元素使用ngChange方法来设置值。这是我目前认为AngularJS无法很好处理的少数项目之一。