【发布时间】:2016-02-05 18:58:05
【问题描述】:
我试图在单击按钮时多次添加字段,它们相互嵌套..what i am trying to do as shown in the picture
html代码:
<body ng-controller="myController">
<form name="{{form.name}}" ng-repeat="form in forms">
<div ng-repeat="cont in form.contacts">
<select>
<option>--select machine--</option>
<option>data1</option>
<option>data2</option>
</select>
<div class="data">
<button class="add_s" ng-click = "add()">Add more</button>
</div>
</div>
<button ng-click="addFields(form)">Add</button>
</body>
angularjs 代码:
var app = angular.module('myApp', []);
app.controller('myController', function($scope) {
$scope.forms = [{ }];
$scope.addFields = function (form) {
if(typeof form.contacts === 'undefined') {
form.contacts = [];
}
form.contacts.push('');
}
$scope.add = function(){
var max_fields = 10; //maximum input boxes allowed
var wrapper = $(".data"); //Fields wrapper
var add_button = $(".add_s"); //Add button ID
var y=1;
var x = 1;//initlal text box count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max input box allowed
x++; //text box increment
$(wrapper).prepend('<div><select><option>--select--</option><option>data1.1</option><option>data1.2</option></select><input type="text"><input type="text"><input type="text"><input type="text"><a href="#" class="remove_field"><i class="glyphicon glyphicon-trash"></i></a></div>');
}
});
$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
}
});
错误: 如果我点击添加按钮,我只会得到一次上面的 div 标签重复,但我希望它应该重复很多次, 当我单击在第二个 div 标签中添加更多按钮数据时,应该重复。但它正在发生..:( ..
请帮忙..提前谢谢你。
【问题讨论】:
-
你像 jQuery 一样思考,这不是 angularJS 的工作方式。看看这个以了解更多信息。 stackoverflow.com/questions/14994391/…
-
不要混合使用 Jquery 和 AngularJs。 AngularJS 足够强大,可以处理您使用 Jquery 创建的那些点击事件。
-
如上所述,除非确实需要,否则不应真正将 jQuery 与 AngularJS 一起使用,因为它们有不同的方法。老实说,在您的情况下,它看起来并不需要那么多。顺便说一句,解决它的一种方法是将数据绑定到一个数组中,然后使用“添加”按钮将新元素推入其中。您可以使用
ng-repeats显示现有元素
标签: javascript jquery html angularjs