[英]Dynamic form fields on AngularJS
我有一个包含动态字段的表单,可以通过单击添加按钮来添加它们:
$scope.addField = function() {
$scope.fields.push($sce.trustAsHtml($('#form_fields').data('prototype')))
};
模板是这样的:
<ul>
<li ng-repeat="field in fields">
<div ng-bind-html="field"></div>
</li>
</ul>
原型如下所示:
<div id="form_fields" data-prototype="<input ng-model="data['field_name'][unique_index]" type="text">" > </div>
不要介意引号,它们被转义了,添加字段后一切正常。 问题是当动态添加data['field_name'][unique_index]
对于Angular来说是未知的,并且仅提交静态字段。
如何使这些新的ng-model变量对Angular可见?
我前段时间也遇到过类似的问题。 问题在于,当以点表示法( foo.bar.baz
)而不是数组表示法表示时,ngModel只能创建新的数据结构。 为了解决这个问题,我创建了ng-model-create
指令。 它将评估与您所拥有的表达式类似的表达式,并将ng-model
属性值转换为点表示法(同时记住原始表达式)。
https://gist.github.com/jessehouchins/c073565f6b693877191a
因此,使用此方法,您的<input ng-model-create ng-model="data['field_name'][unique_index]" type="text">
将类似于<input ng-model-create ng-model="data['field_name'][unique_index]" type="text">
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.