在我的$ scope中,我有一个属性是一系列汽车,名称为$scope.cars
。用户可以删除汽车。我将汽车的$ index(由ng-repeat创建)作为参数传递给删除函数deleteThis
,但是在我接收参数$index
的JavaScript函数中,我不知道如何使用索引由ng-repeat创建,以找到要从$ scope.cars中删除的汽车,因为$ index不是$ scope.cars的原生部分。请告诉我如何
$scope.deleteThis = function($event, $index){
// how can I use $index to find car in $scope.cars to delete
}
<div ng-repeat="car in cars">
<div class="row">
<div class="col-md-1"><h2>{{car.name}}</h2>{{car.make}}</div>
<div class="col-md-2"></div>
<span class="delete" ng-click="deleteThis($event, $index)">x</span>
</div>
答案 0 :(得分:4)
您不需要使用索引,只需传递对象car
并将其拼接出来。
<span class="delete" ng-click="deleteThis(car)">x</span>
和
$scope.deleteThis = function(car){
var cars = $scope.cars;
cars.splice(cars.indexOf(car), 1);
}
你也可以使用$ index(但是如果你有像orderBy这样的过滤器或任何其他过滤器与ng-repeat表达式相结合,使用$ index是很棘手的,$ index可能不是原始数组中的真正索引)。 $index
未附加到重复的对象,但它附加到ng-repeat
创建的子范围。传递car
更具可读性和显性,而不是使用$ index,如果要重复使用ng-repeat中的局部视图,则更可重用。
如果您仍然使用索引,那么只需执行:
$scope.deleteThis = function(index){
$scope.cars.splice(index, 1);
}