AngularJS-通过ng单击传递$index或项目本身?

AngularJS-通过ng单击传递$index或项目本身?,angularjs,scope,Angularjs,Scope,说我有 <div ng-repeat="item in scope.allItems"> <div ng-click="doSomething(...)"></div> </div> 选项2 使用ng click=“doSomething(项目)并具有: $scope.doSomething = function($index) { var myItem = $scope.allItems[$index]; } $scope.do

说我有

<div ng-repeat="item in scope.allItems">
   <div ng-click="doSomething(...)"></div>
</div>
选项2

使用
ng click=“doSomething(项目)
并具有:

$scope.doSomething = function($index) {
    var myItem = $scope.allItems[$index];
}
$scope.doSomething = function(myItem) {
    // Do whatever
}

如果要对scope.allItems使用筛选器,请使用选项2-因为使用筛选器会更改元素$index。 如果不使用过滤器,可以使用选项1。
IMHO选项2比选项1更简单、更有用,因此我已经使用了选项2。

如果您只是对该项做了一些操作,请将其传入。这样,函数就不需要知道该项属于哪个数组:

$scope.addColor = function(car) {
  car.color = 'red';
};
另一方面,如果您需要修改我希望传入$index的数组,并且不必在数组中循环查找匹配项:

$scope.deleteCar = function(index, cars) {
  cars.splice(index, 1);
};

如果我只是想从
中获取一些信息,但无论如何都不更改或修改它,那么又怎么样?同样的事情-如果函数不需要访问整个数组,只需传入项。也许你可以只传入你需要的item.property而不是整个项?