Javascript 是否可以使用AngularJS在ng click中添加ng repeat$索引值?

Javascript 是否可以使用AngularJS在ng click中添加ng repeat$索引值?,javascript,angularjs,angularjs-ng-click,Javascript,Angularjs,Angularjs Ng Click,在我的HTML中,我有一个下拉列表,我使用了ng repeat。 单击这些元素时,每个元素都需要有自己的函数,因此我使用的是$index。以下是我的部分代码: <div class="dropdown-menu status-menu" aria-labelledby="dropdownMenuButton"> <span class="dropdown-item active" ng-click="allItems()">All Items</span>

在我的HTML中,我有一个下拉列表,我使用了ng repeat。 单击这些元素时,每个元素都需要有自己的函数,因此我使用的是$index。以下是我的部分代码:

<div class="dropdown-menu status-menu" aria-labelledby="dropdownMenuButton">
   <span class="dropdown-item active" ng-click="allItems()">All Items</span>
   <span ng-repeat="x in itemsArray" class="dropdown-item"
         ng-click="myFunction{{$index}}()">{{x.name}}</span>
</div>
但当单击它们时,它们不工作,控制台会抛出以下错误:

错误:[$parse:syntax]语法错误:标记“{”是从[{{$index}}()]开始的表达式[myFunction{{{$index}}}()]第11列的意外标记

你知道我该怎么做,或者有没有更好的方法吗?
提前感谢

不要在AngularJS表达式中使用插值(
{{}
),而是使用属性访问器:

<div class="dropdown-menu status-menu" aria-labelledby="dropdownMenuButton">
   <span class="dropdown-item active" ng-click="allItems()">All Items</span>
   <span ng-repeat="x in itemsArray" class="dropdown-item"
         ̶n̶g̶-̶c̶l̶i̶c̶k̶=̶"̶m̶y̶F̶u̶n̶c̶t̶i̶o̶n̶{̶{̶$̶i̶n̶d̶e̶x̶}̶}̶(̶)̶"̶
         ng-click="this['myFunction'+$index]()">
     {{x.name}}
   </span>
</div>

所有项目
{{x.name}
对于AngularJS表达式,
this
上下文绑定到$scope

有关详细信息,请参阅


    • 您还可以通过一个函数通过索引来解决它:

      HTML:

      <div class="dropdown-menu status-menu" aria-labelledby="dropdownMenuButton">
         <span class="dropdown-item active" ng-click="allItems()">All Items</span>
            <span ng-repeat="x in itemsArray" class="dropdown-item" 
                  ng-click="myFunction($index)">{{x.name}}</span>
      </div>
      
      $scope.myFunction(index){
         switch(index){
           case 0: 
              ///function 0
           break;
           case 1:
              ///function 1
           break;
           //etc
         }
      }
      
      $scope.myFunction(index){
         switch(index){
           case 0: 
              ///function 0
           break;
           case 1:
              ///function 1
           break;
           //etc
         }
      }