Привет я пытаюсь удалить строку из таблицы в угловом первых двух строках с красным фоном, а другой с белым.
если я попытаюсь удалить последнюю строку, она будет удалена, но цвет будет только для первой строки (он должен быть как для первой, так и для второй строки)
пример ниже в plnkr: попробуйте удалить последнюю строку щелчком по x в coulmn University:
http://plnkr.co/edit/6td3Ywfeoe502wsQFNGO?p=preview
index.html:
<!DOCTYPE html>
<html ng-app>
<head>
<title></title>
<script src="script.js" ></script>
<script src="http://code.angularjs.org/1.1.5/angular.min.js" ></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div>
<label>Search:</label>
<input type="search" ng-model="search" placeholder="Enter to Search">
</div>
<div id="table1" ng-controller="table">
<table cellpadding="0" border="0" cellspacing="0" >
<tr id="heading">
<th>Roll NO:</th>
<th>Student Name:</th>
<th>University:</th>
</tr>
<tr class="color2" ng-class="student.color" ng-repeat="student in students | filter:search | filter:new_search">
<td>{{student.Rollno}} <input type="checkbox" ng-model="checked[$index]"> </td>
<td>{{student.Name}}</td>
<td>{{student.Uni}} <button ng-click="remove($index)">x </button></td>
</tr>
</table>
<div >
<label>Rollno:</label>
<input type="number" ng-model="new_rollno"> <br>
<label>Name:</label>
<input type="text" ng-model="new_name"><br>
<label>University:</label>
<input type="text" ng-model="new_uni"><br>
<button ng-click="save()">Save</button>
</div>
<div style="float: right; margin-right: 300px;margin-top: -200px;">
<button ng-click="remove($index)" >Remove</button>
</div>
</div>
</body>
</html>
script.js:
// Code goes here
var table = function($scope)
{
$scope.students=[
{Rollno: "1122",Name: "abc",Uni: "res",color:"red"},
{Rollno: "2233",Name: "def",Uni: "tuv",color:"red"},
{Rollno: "23432",Name: "g325325hi",Uni: "wxy"},
{Rollno: "3344",Name: "ghi",Uni: "wxy"}
];
$scope.save=function(){
$scope.students.push({
Rollno: $scope.new_rollno,
Name: $scope.new_name,
Uni: $scope.new_uni
});
$scope.new_rollno="";
$scope.new_name="";
$scope.new_uni=""
};
$scope.checked=[];
$scope.remove=function(index){
alert($scope.checked);
$scope.students.splice(function(record){
return $scope.checked[$index];
},1);
};
};
Основная проблема в коде: первый параметр для сращивания - должен быть начальный индекс, но вы пытаетесь передать функцию. Если использование переданного индекса все работает нормально
$scope.students.splice(index,1);
В фрагменте вы можете видеть, что даже когда вы удаляете последнюю строку - все работает
angular.module('app', [])
.controller('tableCtrl', ['$scope',
function($scope) {
$scope.students = [{
Rollno: "1122",
Name: "abc",
Uni: "res",
color: "red"
}, {
Rollno: "2233",
Name: "def",
Uni: "tuv",
color: "red"
}, {
Rollno: "23432",
Name: "g325325hi",
Uni: "wxy"
}, {
Rollno: "3344",
Name: "ghi",
Uni: "wxy"
}];
$scope.save = function() {
$scope.students.push({
Rollno: $scope.new_rollno,
Name: $scope.new_name,
Uni: $scope.new_uni
});
$scope.new_rollno = "";
$scope.new_name = "";
$scope.new_uni = ""
};
$scope.checked = [];
$scope.remove = function(index) {
$scope.students.splice(index, 1);
};
}
])
/* Styles go here */
table {
width: 100%;
}
table,
th,
td {
border: 1px solid black;
}
.color {
background-color: lightgray;
}
.color2 {
background-color: white;
}
#heading {
background-color: black;
color: white;
}
tr:hover {
background-color: darkblue;
color: white;
font-weight: bold;
}
#images img {
margin-top: 10px;
}
#img1 {
width: 33.4%;
}
#img2 {
width: 66%;
height: 255px;
}
#table1 {
margin-top: 10px;
}
label {
display: block;
margin-bottom: 5px;
margin-top: 5px;
}
button {
margin-top: 5px;
padding: 5px;
}
.red {
background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
<div ng-app="app" ng-controller="tableCtrl">
<div>
<label>Search:</label>
<input type="search" ng-model="search" placeholder="Enter to Search">
</div>
<div id="table1">
<table cellpadding="0" border="0" cellspacing="0">
<tr id="heading">
<th>Roll NO:</th>
<th>Student Name:</th>
<th>University:</th>
</tr>
<tr class="color2" ng-class="student.color" ng-repeat="student in students | filter:search | filter:new_search">
<td>{{student.Rollno}}
<input type="checkbox" ng-model="checked[$index]">
</td>
<td>{{student.Name}}</td>
<td>{{student.Uni}}
<button ng-click="remove($index)">x</button>
</td>
</tr>
</table>
<div>
<label>Rollno:</label>
<input type="number" ng-model="new_rollno">
<br>
<label>Name:</label>
<input type="text" ng-model="new_name">
<br>
<label>University:</label>
<input type="text" ng-model="new_uni">
<br>
<button ng-click="save()">Save</button>
</div>
<div style="float: right; margin-right: 300px;margin-top: -200px;">
</div>
</div>
</div>
1.4.7
а в вашем примере вы используете 1.1.5
.