我在使用angular时为动态生成的表单字段填充默认值时遇到问题。所以,我有一个登录表单,它根据aREST接口返回的attribs生成自己。因此,对于我的html页面,我只有:
<li ng-repeat="element in elements">
<label>UserName</label>
<input type="{{element.inputType}}" ng-model="{{element.fieldName[element]}}" required="required"/>
默认值在elements对象中名为placehoder的属性中返回。以下标记给出了我想要实现的任务的概念
<input type="{{element.inputType}}" ng-model="{{element.fieldName[element]}}" required="required" placeholder="{{element.placeholder}}"/>
最后,当用户点击提交时,我需要发布文本字段的默认值(如果尚未更改)。
任何帮助都将受到高度赞赏。 感谢
答案 0 :(得分:0)
如果你可以添加/使用像underscorejs或lodash这样的库,那么你可以使用他们的_.defaults():
var object = { 'name': 'barney' };
_.defaults(object, { 'name': 'fred', 'employer': 'slate' });
// → { 'name': 'barney', 'employer': 'slate' }
仅限角度,您可以在表单中添加一个指令,即查看“提交”并为您设置默认值。
答案 1 :(得分:0)
感谢您回复@nilsK,我对javascript框架非常陌生,而Angular是我第一个接手的人。 因此,在我的R&amp; D中,我通过将两个值数组(即FieldName和Placeholder)添加到我用于将数据发布到后端的范围对象来解决我的问题。我从REST服务接收的对象(占位符和fieldName)为这些数组赋值:
$scope.user={};
$scope.user.FieldNames=[];
$scope.user.FieldValues=[];
angular.forEach($scope.elements,function(value,index){
$scope.user.fieldValues[index] = $scope.elements[index].placeholder;
$scope.user.fieldNames[index] = $scope.elements[index].fieldName;
})
并在html表单上,我将ng-model绑定到我想在文本字段中显示为默认值的范围数组。
<input type="{{element.inputType}}" ng-model="user.fieldValues[$index]" required="required" />
因此,如果用户未更改默认值,则会过帐默认值,如果有更改,则会过帐更新的值。 任何改进此解决方案的建议都是受欢迎的。