如何在ng-repeat中的指令中单击项目

时间:2014-02-15 09:51:19

标签: javascript angularjs

我有

<tr ng-repeat="item in list">
    <td>{{item.name}}</td> 
    <td><button ng-click="remove" is-disabled>Delete!</button></td>
</tr> 

指令isDisabled

return {
        link: function (scope, elm, attrs)
        {
           // get clicked row here 
        }
};

如何在此指令中获得item$scope.list - 项目清单 我发现我可以在$index中使用ng-repeat,这是正确的方法吗?还有其他解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以通过访问父作用域来访问当前项目,如下所示:

scope.$parent.item

但这不可取,因为它会在代码和名为 item 的硬编码属性中创建紧耦合

尝试创建这样的指令:

app.directive("isDisabled", function() {
  return {
    scope:{
      item:"="
    },
    link: function(scope, elm, attrs) {
        console.log(scope.item);
    }
  };
});

并传递项目:

<tr ng-repeat="item in list">
      <td>{{item.name}}</td>
      <td>
        <button ng-click="remove" is-disabled item="item">Delete!</button>
      </td>
    </tr>

DEMO