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

标签 angularjs scope

说我有

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

最佳答案

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

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

另一方面,如果您需要修改数组,我更愿意传入 $index 并不必循环遍历数组寻找匹配项:

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

关于AngularJS - 通过 ng-click 传递 $index 或项目本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23284093/

相关文章:

javascript - AngularJs 路由没有错误但不工作

angularjs http拦截器类(ES6)失去与 'this'的绑定(bind)

javascript - 使用 javascript 或 JS 或 angularJS for Windows 8 创建用户控件

garbage-collection - D中的垃圾收集,指针和作用域

ruby-on-rails - Rails I18n 翻译范围

ruby - 当文件被 Ruby 解析时,为什么常量不像局部变量那样初始化?

javascript - AngularJS:$http 请求问题 - DOM 未针对 jQuery 函数调用更新

javascript - 按属性名称 AngularJS 对列表进行排序

javascript - 从 JS 外部访问 Angular 对象的函数

function - 如何动态创建在父作用域中可访问的功能?