Angularjs 复选框选中“删除时不更新”,它将在第二次更新
我有这样一个代码:Angularjs 复选框选中“删除时不更新”,它将在第二次更新,angularjs,Angularjs,我有这样一个代码: <body ng-app="UserManagement" ng-controller="UserManagementController"> <h3>to do</h3> <form ng-submit="addtodo();"> <table> <tr><td colspan="2"><input
<body ng-app="UserManagement" ng-controller="UserManagementController">
<h3>to do</h3>
<form ng-submit="addtodo();">
<table>
<tr><td colspan="2"><input type="checkbox" ng-model="employees.todo" /></td></tr>
<tr><td colspan="2">{{remng()}} of {{actuallength}} remaining</td></tr>
<tr ng-repeat="emp in employees">
<td><input type="checkbox" ng-model="emp.todo" /></td>
<td>{{emp.name}}</td>
</tr>
<tr>
<td><input type="text" ng-model="addemp" /></td>
<td><input type="button" value="Add" ng-click="addemps()"/></td>
</tr>
<tr>
<td><input type="button" value="Delete" ng-click="deleteemps();"/></td>
</tr>
</table>
</form>
</body>
做
剩余{actuallength}的{remng()}}
{{emp.name}
这里我做了一个简单的添加、删除员工列表的操作。在删除操作中,当我在不选中任何复选框的情况下单击“删除”时,已选中复选框的项目将被删除,但当我单击任何复选框并按delete键时,已单击的复选框这次不会被删除,但当我第二次单击delete时,它将被删除
Js代码:
var app = angular.module("UserManagement", []);
//Controller Part
app.controller("UserManagementController", function($scope, $http) {
$scope.employees = [
{name:'Abhinav',todo:true},
{name:'Amit', todo:false},
{name:'Raghav',todo:true},
{name:'Sumit', todo:false},
{name:'Ashwani',todo:true},
{name:'Mihir', todo:false},
]
$scope.totalsel = $scope.employees.length;
$scope.actuallength = $scope.totalsel;
alert($scope.actuallength);
//$scope.addtodo = function(){}
//alert("ddd");
$scope.deleteemps = function(){
//alert($scope.employees.name);
$scope.deleted_emps = [];
//alert("in foreach: "+$scope.employees[2].todo);
angular.forEach($scope.employees, function(todos, index) {
//alert(todos.todo);
//alert(todos.name);
if(todos.todo){
// alert(index)
var deletednames = todos.name;
// var deletedtodo = todos.todo;
//$scope.deleted_emps.push(deletednames)
// alert(deletednames);
$scope.deleted_emps.push({name:todos.name, todo:todos.todo});
//var abc=angular.toJson($scope.deleted_emps);
// alert(index);
//console.log(angular.toJson(todos.name));
console.log("hiii: "+$scope.deleted_emps.name);
var indx;
for (var i=0; i<$scope.deleted_emps.length; i++) {
console.log("iii: "+$scope.deleted_emps[i].name);
console.log("i: "+$scope.employees[index].name);
//console.log($scope.employees[index].name.indexOf($scope.deleted_emps[i].name));
indx = $scope.employees[index].name.indexOf($scope.deleted_emps[i].name);
// alert(indx);
if (indx > -1) {
// alert(indx);
//$scope.employees.splice()
$scope.employees.splice(index, 1);
}
}
/* var indx;
for (var i=0; i<array2.$scope.deleted_emp; i++) {
indx = array1.indexOf(array2[i]);
if (indx > -1) {
array1.splice(indx, 1);
}
}
*/
}
$scope.actuallength = $scope.totalsel;
})
}
});
var-app=angular.module(“UserManagement”,[]);
//控制器部件
app.controller(“UserManagementController”,函数($scope,$http){
$scope.employees=[
{name:'Abhinav',todo:true},
{name:'Amit',todo:false},
{name:'Raghav',todo:true},
{name:'Sumit',todo:false},
{name:'Ashwani',todo:true},
{name:'Mihir',todo:false},
]
$scope.totalsel=$scope.employees.length;
$scope.actuallength=$scope.totalsel;
警报($scope.actuallength);
//$scope.addtodo=函数(){}
//警报(“ddd”);
$scope.deleteemps=函数(){
//警报($scope.employees.name);
$scope.deleted_emps=[];
//警报(“在foreach:+$scope.employees[2].todo中);
angular.forEach($scope.employees,函数(TODO,索引){
//警报(todo.todo);
//警报(todos.name);
如果(todo.todo){
//警报(索引)
var deletednames=todos.name;
//var deletedtodo=todos.todo;
//$scope.deleted\u emps.push(deletednames)
//警报(删除名称);
$scope.deleted_emps.push({name:todos.name,todo:todos.todo});
//var abc=angular.toJson($scope.deleted\u emps);
//警报(索引);
//log(angular.toJson(todos.name));
log(“hiii:+$scope.deleted_emps.name”);
var-indx;
对于(变量i=0;i-1){
//警报(indx);
//$scope.employees.splice()
$scope.employees.splice(索引1);
}
}
/*var-indx;
对于(变量i=0;i-1){
阵列1.拼接(indx,1);
}
}
*/
}
$scope.actuallength=$scope.totalsel;
})
}
});
我使用的是AngularJS1.6.1。提前谢谢。我根据你的密码做了一把小提琴 我的示例代码是这样的
$scope.deleteEmp = function(){
var slicedEmps = [];
angular.forEach($scope.employees, function(e){
if(!e.isChecked){
slicedEmps.push(e);
}
});
$scope.employees = slicedEmps;
};
我的建议是制作新阵列,而不是使用“拼接”
我希望这把小提琴能帮助你。:) 我根据你的密码做了一把小提琴 我的示例代码是这样的
$scope.deleteEmp = function(){
var slicedEmps = [];
angular.forEach($scope.employees, function(e){
if(!e.isChecked){
slicedEmps.push(e);
}
});
$scope.employees = slicedEmps;
};
我的建议是制作新阵列,而不是使用“拼接”
我希望这把小提琴能帮助你。:) 这里不添加您的全部代码。只需添加删除函数好的,我只添加了删除函数。这里不添加整个代码。只需添加删除功能OK,我只添加了删除功能。