我有很多数组正在进行中,我已设法将其缩短,我已将其上传到下面的链接中。 http://www.asaadmahmood.com/asaad/edited/edit.php
您可以查看我的角度代码,代码非常短,可以在下面的文件中看到: http://www.asaadmahmood.com/asaad/edited/js/main.js
我正在做的是我在名为EventGroups.list的数组中推送人员标题;我将它作为一个对象数组的原因是我有一堆值,我需要通过它们的特定键来访问它们。
我点击的复选框会从复选框本身selectedGroupCri
上的另一个数组ng-click
中添加/减去。
这里的问题是,当我在数组中添加一个对象时,对象会被添加,人们也会被添加,但是在添加它们之后,即使被编辑到数组中,人们也会通过上面的复选框进行链接。我想找到一种正确的方法来添加人员,然后在两者之间关闭此链接,这样当一个人创建了对象时,这些复选框就不能再干扰它了。
我的标记是这样的:
<div class="form-group" ng-controller="EventCriCtrl">
<h3><label class="checkbox__label">Select people <span>*</span></label><br></h3>
<div class="checkbox" ng-repeat="criterion in groupCriteria">
<label style="font-size: 15px">
<input type="checkbox" value="{{criterion.title}}" ng-checked="selectedGroupCri.indexOf(criterion) > -1" ng-click="toggleCriSelection(criterion)">
<div class="value">{{criterion.title}}</div>
</label>
</div>
</div>
<div class="form-group">
<input type="button" ng-click="groupAdd()" class="btn btn-default" value="Add Group">
</div>
<div ng-repeat="group in groups">
<p>{{group}}</p>
</div>
答案 0 :(得分:0)
当&#34;添加组&#34;单击按钮,您正在调用groupAdd()函数。这可能是在EventCriCtrl控制器中定义的。我怀疑在这个函数中,你将当前检查的数组推入$ scope.groups数组。但是,这只是将指向对象的指针推入数组中。相反,您需要使用Angular.copy()创建数组的副本,以便创建不再绑定到复选框的深层副本。
如果你现在正在做这样的事情:
$scope.groups.push($scope.selectedCheckboxes);
然后你应该改为:
$scope.groups.push(angular.copy($scope.selectedCheckboxes));
如果您发布控制器代码,我可以看看这是否是确切的问题,并相应地更新代码。
更新(只看了你链接的代码的来源):
你在哪里(在$ scope.groupAdd定义中):
var criteria = $scope.selectedGroupCri;
更改为:
var criteria = angular.copy($scope.selectedGroupCri);