2014-04-25 25 views
2

说我有

<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 
} 

回答

2

如果你只是在做项目的东西,通过在这样的功能并不需要知道该项目所属的数组:

$scope.addColor = function(car) { 
    car.color = 'red'; 
}; 

如果,另一方面,你需要修改我更喜欢在$索引传递数组并保存不必通过阵列寻找一个匹配:

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

如果我只是要g从“item”中获取一些信息,但无论如何都不能更改或修改它,那又如何? – Kousha

+0

同样的事情 - 如果函数不需要访问整个数组,只需传入该项。也许你可以通过传递你需要的item.property而不是整个项目? –

1

如果要为scope.allItems使用过滤器,请使用选项2 - 因为使用过滤器会更改元素$ index。 如果你不使用过滤器,你可以使用选项1. 恕我直言选项2比选项1更容易和有用,所以我已经使用选项2.