是否可以在 AngularJS 的 ng-click 中添加 ng-repeat $index 值?
Is it possible to add an ng-repeat $index value inside an ng-click with AngularJS?
在我的 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>
当我在浏览器中检查元素时,它实际上显示了这样的项目:
ng-click="myFunction0()", ng-click="myFunction1()", ng-click="myFunction2()", etc...
但是当点击它们时,它们不起作用,并且控制台抛出这个错误:
Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 11 of the expression [myFunction{{$index}}()] starting at [{{$index}}()]
知道如何完成这项工作,或者是否有更好的方法?
提前致谢
不要在 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>
对于 AngularJS 表达式,this
上下文绑定到 $scope。
有关详细信息,请参阅
你也可以通过 index 在一个 function:
中解决
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
}
}
在我的 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>
当我在浏览器中检查元素时,它实际上显示了这样的项目:
ng-click="myFunction0()", ng-click="myFunction1()", ng-click="myFunction2()", etc...
但是当点击它们时,它们不起作用,并且控制台抛出这个错误:
Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 11 of the expression [myFunction{{$index}}()] starting at [{{$index}}()]
知道如何完成这项工作,或者是否有更好的方法?
提前致谢
不要在 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>
对于 AngularJS 表达式,this
上下文绑定到 $scope。
有关详细信息,请参阅
你也可以通过 index 在一个 function:
中解决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
}
}