Angularjs 将可重复表单子集绑定到模型
在登记表上,我允许用户输入零个或多个电话号码。每个电话号码由前缀和号码组成,每个电话号码有两个字段。用户可以决定要提供多少号码,“添加更多号码”链接将克隆表单的这一部分Angularjs 将可重复表单子集绑定到模型,angularjs,angularjs-model,Angularjs,Angularjs Model,在登记表上,我允许用户输入零个或多个电话号码。每个电话号码由前缀和号码组成,每个电话号码有两个字段。用户可以决定要提供多少号码,“添加更多号码”链接将克隆表单的这一部分 Prefix: [_______] Number: [_______] + add more numbers 我绑定到的模型是固定的,应该是以下格式: $scope.model = { "...main inputs": "username, etc...", phoneNumbers: [ /
Prefix: [_______]
Number: [_______]
+ add more numbers
我绑定到的模型是固定的,应该是以下格式:
$scope.model = {
"...main inputs": "username, etc...",
phoneNumbers: [
// for each phone number I expect this object
{ "prefix": "+1", "number": "123123123" }
]
};
我不确定应该如何为这些文本输入设置ng模型,以便在数组中生成这些对象
此外,我非常喜欢引用绑定,并限制范围监视和基于事件的范围更改,因为这些更改通常不会被其他可能使用此值的指令注意到,除非被监视。基本上,这意味着我的意图是在表单中填充数字时动态生成数组中的对象,或者在删除数字或两个输入都为空时动态删除数组中的对象
数组应仅包含有效和填充的对象,不应将部分填充的对象或空对象添加到模型或数组中,这与通常对具有无效值的属性所做的操作相同-这些属性将从模型对象中删除。基本上是对每个已验证对象的数组进行推送,并删除每个无效对象的对象切片。而是自动地,而不是编写推送/切片函数 您好,请尝试以下代码:
Html:
您好,请在中查看此演示,使用以下代码
<!DOCTYPE html>
<html>
<head>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
</head>
<body ng-app ng-controller="todoCtrl">
<form name="form" ng-submit="addmore()">
<div class="form-group">
<label for="inputFirstName">Prefix</label>
<input class="form-control" type="text" ng-model="phone_prefix"/>
</div>
<div class="form-group">
<label for="inputLastName">Phone number</label>
<input class="form-control" type="text" ng-model="phone_Number"/>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Add more number"/>
</div>
</form>
<div ng-repeat="phone in phoneNumberArray">
{{ phone.prefix + " "+ phone.phoneNumber}}
</div>
<script>
function todoCtrl($scope) {
debugger;
$scope.phoneNumberArray = [
{prefix: '14', phoneNumber:'123'}
];
$scope.addmore = function () {
$scope.phoneNumberArray.push(
{prefix: $scope.phone_prefix, phoneNumber: $scope.phone_Number}
);
}
}
</script>
</body>
</html>
您现在可以获取它吗?…这可以工作,但如果字段为空,则将使用空或无值对象填充数组。我认为您的问题值对象将推入另一个正确的数组中。数组应仅包含有效对象。如果有三个表单子集是开放的,但只有一个子集是有效的,则数组长度应为1,其中包含一个有效对象。
$scope.phoneNumberArray = [
{
prefix: "",
phoneNumber:"",
}];
$scope.addmore = function () {
$scope.phoneNumberArray.push({
prefix: "",
phoneNumber: "",
});
}
<!DOCTYPE html>
<html>
<head>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
</head>
<body ng-app ng-controller="todoCtrl">
<form name="form" ng-submit="addmore()">
<div class="form-group">
<label for="inputFirstName">Prefix</label>
<input class="form-control" type="text" ng-model="phone_prefix"/>
</div>
<div class="form-group">
<label for="inputLastName">Phone number</label>
<input class="form-control" type="text" ng-model="phone_Number"/>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Add more number"/>
</div>
</form>
<div ng-repeat="phone in phoneNumberArray">
{{ phone.prefix + " "+ phone.phoneNumber}}
</div>
<script>
function todoCtrl($scope) {
debugger;
$scope.phoneNumberArray = [
{prefix: '14', phoneNumber:'123'}
];
$scope.addmore = function () {
$scope.phoneNumberArray.push(
{prefix: $scope.phone_prefix, phoneNumber: $scope.phone_Number}
);
}
}
</script>
</body>
</html>