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中的项目。谢谢,这会起作用,但我很好奇是否有办法在不更新指令的情况下解决此问题。我的直觉告诉我答案是“否”。该指令有自己的独立作用域,因此如果要允许它访问其父级作用域中的项,则必须在指令定义中显式绑定到这些项。