【发布时间】:2014-12-02 02:41:19
【问题描述】:
我在我的视图中列出了一个名称数组,如下所示:
<div class="checkbox col-md-3" ng-repeat="staff in stafflist | orderBy: 'name'">
<div class="checkboxinner">
<button class="btn btn-staff form-control"
ng-show="!staff.chosen"
ng-click="pushStaff(staff)">
{{staff.name}}
</button> // visible when unselected, invisible when selected
<button class="btn btn-primary form-control"
ng-show="staff.chosen"
ng-click="unpushStaff(staff, $index)">
{{staff.name}}
</button> // visible when selected, invisible when unselected
</div>
</div>
第一个按钮触发此功能,将对象添加到数组中并被另一个按钮(不同颜色,相同内容)替换,该按钮应该用作切换。此功能完美运行。
$scope.paxlist = [];
$scope.pushStaff = function (staff) {
staff.chosen = true;
$scope.paxlist.push(
{
name: staff.name
}
);
console.log($scope.paxlist);
};
基本上,当我单击时,我添加了对象,当我再次单击时,我将其删除。这是删除功能:
$scope.unpushStaff = function (staff, $index) {
staff.chosen = false;
var index=$scope.paxlist.indexOf(staff)
$scope.paxlist.splice(index,1);
console.log($scope.paxlist);
}
我的问题是 unpushStaff() 确实会删除一个项目,但不是我点击删除的项目,而是另一个。
我错过了什么?
也许 ng-show 弄乱了 $index?
【问题讨论】:
-
我在控制器中看到
paxlist,在模板中看到stafflist。两者之间有什么联系? -
模板中的@deitch 我列出了stafflist中的所有项目,然后我希望能够选择其中一些并将它们添加到另一个数组(paxlist)中。
-
哦,所以模板是用于从人员列表中挑选并从单独的 paxlist 中添加/删除?当您执行
unpushStaff()时,您看到了什么?正在删除哪个项目? -
哦,我刚刚想通了。
-
例如,我选择a、b和c。然后我取消选择 b 并且 paxlist 将保留为
[a, b]而不是[a,c]
标签: javascript arrays angularjs angularjs-ng-repeat ng-repeat