说我有
<div ng-repeat="item in scope.allItems">
<div ng-click="doSomething(...)"></div>
</div>
如果我想在点击时使用item
做某事,哪一个是更好的选择?
选项1
使用ng-click="doSomething($index)
并拥有:
$scope.doSomething = function($index) {
var myItem = $scope.allItems[$index];
}
选项2
使用ng-click="doSomething(item)
并拥有:
$scope.doSomething = function(myItem) {
// Do whatever
}
答案 0 :(得分:2)
如果您只是对该项执行某些操作,请将其传入。这样,该函数无需知道该项所属的数组:
$scope.addColor = function(car) {
car.color = 'red';
};
另一方面,如果你需要修改数组,我更喜欢传入$ index并且不必循环遍历数组寻找匹配:
$scope.deleteCar = function(index, cars) {
cars.splice(index, 1);
};
答案 1 :(得分:1)
如果要对scope.allItems使用过滤器,请使用选项2 - 因为使用过滤器会更改元素$ index。 如果不使用过滤器,则可以使用选项1。 恕我直言选项2比选项1更容易和有用,所以我已经使用选项2。