拼接从 AngularJS 中的 ng-repeat 中删除错误的对象
Splice removing wrong object from ng-repeat in AngularJS
我在视图中列出了一组名称,如下所示:
<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?
stafflist
中的staff
条目和paxlist
中的条目并不相同。基于以下模板:
<button class="btn btn-staff form-control"
ng-show="!staff.chosen"
ng-click="pushStaff(staff)">
{{staff.name}}
</button> // visible when unselected, invisible when selected
很明显,stafflist
中的每个staff
条目都是某种对象,该对象至少具有一个属性name
和另一个chosen
。
当您推送到 paxlist
时,您将创建一个新对象,如下所示:
$scope.paxlist.push(
{
name: staff.name
}
);
这很好。但是,当您随后删除它时,您正在通过以下方式寻找它:
var index=$scope.paxlist.indexOf(staff)
其中staff
是工作人员列表中的对象!当然,该对象在paxlist中不存在 - 您在上面派生的paxlist.push()
是一个单独的对象 - 因此indexOf()
返回-1
,导致splice()
删除paxlist
上的最后一项。
相关文章:
- PHP 删除错误
- 单选按钮单击删除错误消息 jQuery
- JQuery 验证 - 在表单中添加/删除错误 css 类
- 删除错误.MongooDB + Express.传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符
- 表单验证:在输入中按键后删除错误
- 如何在调用服务器请求时删除错误
- jQuery 验证错误放置 - 更正后无法删除错误
- 拼接从 AngularJS 中的 ng-repeat 中删除错误的对象
- 如何从电子邮件格式检查器代码中删除错误文本
- 从数组中删除错误的值会留下空值.如何改进我的代码
- 如果onclick按钮,在js中删除错误信息
- 删除错误-无法处理绑定“foreach”
- 不能删除数组项,总是删除错误的项
- jqGrid后删除错误
- 如何根据类名删除错误
- 在弹出窗口中onfocus以删除错误
- 如何隐藏/删除错误信息后显示它给用户后几秒钟在javascript
- Javascript:表单验证-从更正字段中删除错误消息
- Javascript从DOM中删除错误的元素
- 从jQuery validate中重置窗体/删除错误类