gpt4 book ai didi

javascript - Angularjs 以各种形式动态添加表单字段

转载 作者:数据小太阳 更新时间:2023-10-29 04:47:54 26 4
gpt4 key购买 nike

我正在使用 ng-repeat 创建一堆包含值的表单。对于每个表单,还有一个按钮可以将行添加到具有新字段的特定表单。代码如下

HTML:

<form name="{{form.name}}"
ng-repeat="form in forms">
<h2>{{form.name}}</h2>
<div ng-repeat="cont in form.contacts">
<input type="text" class="xdTextBox" ng-model="cont.ac"/>
<input type="text" class="xdTextBox" ng-model="cont.a_number"/>
<input type="text" class="xdTextBox" ng-model="cont.p_id"/>
</div>
<button ng-click="submit(form)">Submit</button>
<button ng-click="addFields(form)">Add</button>
<hr>
</form>

Javascript:

var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {

$scope.forms = [{
"name" : "form1", "ac": 251, "a_number": "7933", "p_id": 33
}, {
"name": "form2", "ac": 252, "a_number": "7933", "p_id": 4
}, {
"name": "form3", "ac": 253, "a_number": "7362", "p_id": 3
}];


$scope.addFields = function (form) {
form.contacts.push({name:'', ac: '', a_number: '', p_id: '' });
}

$scope.submit = function(form){
console.log(form.contacts);
}
});

它不起作用。这是它的plunker: http://plnkr.co/edit/THdtLgkwKrV7imqZGjL2?p=preview

它应该是这样的(不同之处在于从数据库接收到的数据对象与之前提出的问题略有不同): http://plnkr.co/edit/fETiSYVW7Y5C1yTCwizd?p=preview请让我知道问题出在哪里。谢谢

最佳答案

您的addFields 方法是问题所在。只需为 form.contacts 未定义时添加一个案例并将其设置为空数组。或者让每个表单项都以一个设置为空数组的联系人键开头。

$scope.addFields = function (form) {
if(typeof form.contacts === 'undefined') {
form.contacts = [];
}
form.contacts.push({name:'', ac: '', a_number: '', p_id: '' });
}

适用于 this fork 中的更改

Angular 也有一个辅助函数来确定什么时候你可能想使用未定义的东西,虽然我不知道它是否真的有什么不同。

angular.isUndefined(form.contacts)

关于javascript - Angularjs 以各种形式动态添加表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com