当我点击按钮值时,将推送到另一个阵列。接下来我点击相同的按钮,推送项目将被删除。 在我的项目中正确推送完成。但第二次点击同一个按钮,数组中的第一个元素被删除而不是选中的。
这是我的HTML代码。
<a class="btn {{table.btnClass}} btn-success" ng-click="getTable(table)" style="padding-left:1px">{{table.tablename}}</a>
这是我的控制器代码
$scope.tableArray=[]
$scope.tableslist=[]
$scope.getTable=function(table){
table.btnClass = table.btnClass == "btn-danger" ? "btn-success" : "btn-danger"
console.log(table)
var exists=false;
angular.forEach($scope.tableArray, function (list) {
if ((list.tablename == table.tablename)) {
console.log(list.tablename)
console.log(table.tablename)
exists=true;
$scope.tableArray.splice(list._id,1)
return false
}
});
if(!exists){
$scope.tableslist.push(table)
$scope.tableArray=$scope.tableslist
console.log($scope.tableArray)
table.color="red"
}
}
请帮帮我
答案 0 :(得分:3)
在foreach中添加第二个参数,使用index从数组中拼接
angular.forEach($scope.tableArray, function (list, index) {
----------
-------------------
$scope.tableArray.splice(index,1)
})
答案 1 :(得分:0)
要删除数组中的选定项,您可以使用indexOf,如下所述。
<base href="/path/" />
答案 2 :(得分:0)
遇到Splice的类似问题。在我的情况下,我必须解决如下,如果它帮助某人。
如果您正在处理对象,请注意indexOf适用于数组,不适用于该数组中的Object。您可以执行以下操作来识别索引并处理此案例;
$scope.removeReport = function(report) {
var index = $scope.contact.reports.map(function(r) { return r.id;}).indexOf(report.id);
if (index >= 0) {
$scope.contact.reports.splice(index, 1);
}
}