Javascript 如何判断指令回调是从哪个ng repeat项生成的?

Javascript 如何判断指令回调是从哪个ng repeat项生成的?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个可以用回调参数调用的下拉指令。当用户在下拉列表中选择一个选项时,将从指令调用此回调。正常工作的回调函数如下所示: myDirectiveCallback(selectedItem){ //Do something with the selectedItem } 我希望在ng repeat中使用此指令,并且我希望能够知道在哪个下拉列表(ng repeat中的哪个项目)中进行了选择并从中调用了回调 <div ng-repeat="item in myListOfItems"&

我有一个可以用回调参数调用的下拉指令。当用户在下拉列表中选择一个选项时,将从指令调用此回调。正常工作的回调函数如下所示:

myDirectiveCallback(selectedItem){
    //Do something with the selectedItem
}
我希望在ng repeat中使用此指令,并且我希望能够知道在哪个下拉列表(ng repeat中的哪个项目)中进行了选择并从中调用了回调

<div ng-repeat="item in myListOfItems">
    <my-directive callback="myDirectiveCallback"></my-directive>
</div>


有没有办法在不更新指令的情况下执行此操作?

将另一个属性添加到指令中,这样您就可以将其传递给
项,然后在指令范围内引用它,这样您就可以将其传递给回调(或任何您需要它的内容)

您没有包含指令代码,因此我将尝试向您展示我的意思:

myApp.directive('myDirective', function() {
  return {
    restrict: 'A',
    transclude: true,
    scope: {
      currentItem: '=currentItem'  // could just use '=' since names match
    },
    templateUrl: 'myTemplate.html'
  };
});
然后将带有当前项的currentItem属性添加到指令调用中:

<div ng-repeat="item in myListOfItems">
    <my-directive currentItem="item" callback="myDirectiveCallback"></my-directive>
</div>


难道不就是
吗?你能在
$scope
上添加一些东西吗?就像在
我的指令
之前那样,但是在
ng repeat
之后,你能添加一个
{item.id}
或者任何你与这个范围相关联的东西吗?@Claies否。在指令中,回调被称为“scope.callback(selection)”我希望访问回调函数中的选定值和ng repeat项,但当我编写“myDirectiveCallback(item)”时,我不知道回调是从哪个ng repeat项进行的。我不确定是否理解?
不是
选项
?不,可能我不够清楚<代码>选择
是在下拉列表中选择的值<代码>项目是MyListFitems中的项目。谢谢,这会起作用,但我很好奇是否有办法在不更新指令的情况下解决此问题。我的直觉告诉我答案是“否”。该指令有自己的独立作用域,因此如果要允许它访问其父级作用域中的项,则必须在指令定义中显式绑定到这些项。