我需要复制一些输入字段才能处理来自客户端的数据。我用jQuery http://jsfiddle.net/m7R3f/1/
完成了它HTML:
<fieldset id="fields-list">
<div class="pure-g entry">
<div class="pure-u-1-5">
<input type="text" class="pure-input-1" id="input-1" name="input-1">
</div>
<div class="pure-u-1-5">
<input type="text" class="pure-input-1" id="date" name="date">
</div>
<div class="pure-u-1-5">
<input type="text" class="pure-input-1" id="input-2" name="input-2">
</div>
</fieldset>
<button id="add">Add</button>
JS
$(document).ready(function ()
{
$("#add").click(function ()
{
$(".entry:first").clone(false).appendTo("#fields-list");
});
});
但是我刚开始学习Angular并希望将这些代码转换为Angular。 我已经在stackoverflow中阅读了问题,并在此处找到了带有angularjs的代码:http://jsfiddle.net/roychoo/ADukg/1042/。但是,它似乎仅适用于一个输入字段?我可以使用AngularJS克隆/复制几个输入字段吗? (换句话说:将上面的代码转换为AngularJS版本?) 非常感谢你。
答案 0 :(得分:5)
如果要克隆html元素,则使用ng-repeat指令的最佳方法。
您的控制器
var App = angular.module('App', []).controller('Test', ['$scope',
function($scope) {
$scope.inputCounter = 0;
$scope.inputs = [{
id: 'input'
}];
$scope.add = function() {
$scope.inputTemplate = {
id: 'input-' + $scope.inputCounter,
name: ''
};
$scope.inputCounter += 1;
$scope.inputs.push($scope.inputTemplate);
};
}
])
&#13;
<!DOCTYPE html>
<html ng-app="App">
<head lang="en">
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
</head>
<body ng-controller="Test">
<fieldset id="fields-list">
<div class="pure-g entry" ng-repeat="input in inputs track by input['id']">
<div class="pure-u-1-5">
<input type="text" class="pure-input-1" id="input" name="input-1">
</div>
<div class="pure-u-1-5">
<input type="text" class="pure-input-1" id="date" name="date">
</div>
<div class="pure-u-1-5">
<input type="text" class="pure-input-1" id="input-2" name="input-2">
</div>
</div>
</fieldset>
<button type="button" id="add" ng-click="add()">Add</button>
</body>
</html>
&#13;
Angular阻止创建重复元素,为避免这种情况,请使用示例中的track by
答案 1 :(得分:4)
您应该创建一个数组并在HTML中使用ng-repeat
。数组中的每个对象都可以包含填充div所需的数据。如果要从三个条目开始,则添加这三个条目的数据。如果你想添加更多,那么只需按下阵列即可。由于Angular的双向数据绑定,一旦元素被推入数组,就会出现表单字段。
有关如何执行此操作的详细信息,请查看Angular主页上的待办事项示例。
答案 2 :(得分:2)
再添加两个ng-model
并推送这些模型
$scope.add = function(){
$scope.items.push($scope.newitem1,$scope.newitem2,$scope.newitem3);
}