我有一个AngularJS表单,我在其中使用ng-repeat根据另一个选择动态地构建表单的字段。我正在尝试动态生成模型名称,并且遇到了问题。
<div class="form-group" ng-repeat="parameter in apiParameters"> <label for="{{parameter.paramName}}" class="col-sm-2 control-label">{{parameter.paramTitle}}</label> <div class="col-sm-3"> <input type="text" class="form-control" name="{{parameter.paramName}}" id="{{parameter.paramName}}" ng-model="formData.parameters.{{parameter.paramName}}" placeholder="{{parameter.paramTitle}}"> </div> </div>
我需要的是评估为ng-model =“ formData.parameters.fooId”或ng-model =“ formData.parameters.barId”
上面的结果导致错误:错误:[$ parse:syntax]语法错误:标记’{‘是表达式[formData.parameters。{{parameter.paramName}}]]的第21列中的意外标记,从[{{ parameter.paramName}}]。
在我的控制器中,我有:
$scope.formData = {}; $scope.formData = { settings: { apiEndpoint: '', method: 'get' }, parameters: {} };
我也尝试过ng-model =“formData.parameters。[parameter.paramName]”(基于此问题,如何在AngularJS中设置动态模型名称?,但这并没有评估,并且无法设置ng-模型值。我不确定我要完成的目标是否可能。我假设我需要遍历控制器才能实现我想要的功能,但是任何帮助将不胜感激。
您只需要使用哈希键作为模型:
<div class="form-group" ng-repeat="parameter in apiParameters"> <label for="{{parameter.paramName}}" class="col-sm-2 control-label">{{parameter.paramTitle}}</label> <div class="col-sm-3"> <input type="text" class="form-control" name="{{parameter.paramName}}" id="{{parameter.paramName}}" ng-model="formData.parameters[parameter.paramName]" placeholder="{{parameter.paramTitle}}"> </div> </div>
还有许多其他方法,但是这种方法比其他方法更简单。