不断添加新表单输入

时间:2014-09-05 09:33:31

标签: angularjs angularjs-directive angularjs-ng-repeat angular-ui-bootstrap

我目前有一个表单,个人可以通过两个输入字段添加名字和姓氏。在某些情况下,他们可能想要添加更多 不止一个,所以我想在下面提供按钮/位文本,如果他们点击将创建另一个名字和姓氏输入字段来添加 信息。理想情况下,我希望这可以无限重复,他们可以随时添加任意数量但我知道这些 有点不切实际,如果我决定让他们能够添加10个名字和姓氏,我会很高兴。我只是想知道我是否可以 以角度完成这个,如果是这样,最好的方法是什么?使用目录和ng-repeat或其他东西 行呢?我还想要一些文本,只需单击即可删除指定的firstname / lastname输入。

如果可能的话,我会很感激如何实现这一目标(我不要求任何人继续进行编码),更多只是 关于如何实现这一目标的指导原则。似乎无法想到在我脑海里做到这一点的最好方法。

感谢。

2 个答案:

答案 0 :(得分:2)

有可能,

在你的控制器中,为了让事情更有条理,你可以拥有像

这样的东西
var name = function (first, last) {
    this.first = first;
    this.last = last;
}

$scope.names = [new name()]; // start off with one firstname + lastname
$scope.addName = function () {
    $scope.names.push(new name()); // add a blank name
}

和相应的html;

<div ng-repeat="name in names">
    <input type="text" ng-model="name.first" placeholder="firstname"/>
    <input type="text" ng-model="name.last" placeholder="lastname"/>
</div>
<button ng-click="addName()"></button>

答案 1 :(得分:1)

嗯,这绝对是可能的,并且可能更容易做无限的而不是特定数量的输入。

对于角度控制器中的javascript代码,我将有一个包含要添加的名称的数组。从和数组开始,然后是一个将添加到该数组的函数:

$scope.namesToAdd=[];
$scope.moreNames=function(){
  namesToAdd.push({first:'',sirname:''});
};

然后对于html代码,它将是这样的:

<input type="text" ng-repeat-start="names in namesToAdd" ng-model="names.first">
<input type="text" ng-repeat-end ng-model="names.sirname">
<button ng-click="moreNames()">Add more names</button>