在 Angular JS 转发器中迭代一个变量?
iterate a variable in an Angular JS repeater?
我有一个设置,其中 div 隐藏并显示以下 div,以创建折叠 div。我正在使用 ng-show div 的变量,而 hide/show 的 div 是
<div ng-click="costSummary=!costSummary" ng-class="{open : costSummary}">
单击 div 切换变量和 class(为内部设置 header 样式,用于显示三角形)。工作正常。
但是,我需要在 ng-repeat 中使用此构造,并且我不确定如何递增该变量以便每次迭代都具有唯一的 class。如:
<div ng-click="myVar1=!myVar1" ng-class="{open : myVar1}" ng-repeat="claim in claims">
因为这个 hide/show 要求每个 header/div 对都有一个唯一的 class 名称。
在这种情况下,如何附加索引号或其他内容?
在 ng-repeat 中,您可以访问 $index
- 这将为您提供正在迭代的集合中当前项目的索引。您可以使用它来生成唯一的 class ID。
但是,你能不能也试试这个:
<div ng-repeat="claim in claims">
<div ng-click="claim.myVar1=!claim.myVar1" ng-class="{open : claim.myVar1}">
</div>
</div>
您将带有 ng-click 的 div 放置在 ng-repeater 包装器中。由于您使用 claim in claims
,您可以像以前一样在 claim 上设置变量。
如果您需要在重复的 div 上切换可见性,您可以这样做:
<div ng-click="claim.isOpen=!claim.isOpen" ng-class="{open : claim.isOpen}" ng-repeat="claim in claims" ng-init="claim.isOpen = false">
说明:
ng-init 将在每个重复的声明中初始化一个 "isOpen" 变量(这实际上应该在 JS 端完成)。然后 ng-click 将切换 isOpen 变量。然后 ng-class 将监视该变量的变化。
您不需要在 ng-repeat
中添加多个变量。因为 ng-repeat
在每次重复时都会创建一个子作用域。所以变量在子作用域中创建,所以一个变量对 ng-repeat
中的其他子作用域不可见
所以,
<div ng-click="myVar1=!myVar1" ng-class="{open : myVar1}" ng-repeat="claim in claims">
{{ claim }}
</div>
这样就够了。
这里是 Plunker
我有一个设置,其中 div 隐藏并显示以下 div,以创建折叠 div。我正在使用 ng-show div 的变量,而 hide/show 的 div 是
<div ng-click="costSummary=!costSummary" ng-class="{open : costSummary}">
单击 div 切换变量和 class(为内部设置 header 样式,用于显示三角形)。工作正常。
但是,我需要在 ng-repeat 中使用此构造,并且我不确定如何递增该变量以便每次迭代都具有唯一的 class。如:
<div ng-click="myVar1=!myVar1" ng-class="{open : myVar1}" ng-repeat="claim in claims">
因为这个 hide/show 要求每个 header/div 对都有一个唯一的 class 名称。
在这种情况下,如何附加索引号或其他内容?
在 ng-repeat 中,您可以访问 $index
- 这将为您提供正在迭代的集合中当前项目的索引。您可以使用它来生成唯一的 class ID。
但是,你能不能也试试这个:
<div ng-repeat="claim in claims">
<div ng-click="claim.myVar1=!claim.myVar1" ng-class="{open : claim.myVar1}">
</div>
</div>
您将带有 ng-click 的 div 放置在 ng-repeater 包装器中。由于您使用 claim in claims
,您可以像以前一样在 claim 上设置变量。
如果您需要在重复的 div 上切换可见性,您可以这样做:
<div ng-click="claim.isOpen=!claim.isOpen" ng-class="{open : claim.isOpen}" ng-repeat="claim in claims" ng-init="claim.isOpen = false">
说明:
ng-init 将在每个重复的声明中初始化一个 "isOpen" 变量(这实际上应该在 JS 端完成)。然后 ng-click 将切换 isOpen 变量。然后 ng-class 将监视该变量的变化。
您不需要在 ng-repeat
中添加多个变量。因为 ng-repeat
在每次重复时都会创建一个子作用域。所以变量在子作用域中创建,所以一个变量对 ng-repeat
所以,
<div ng-click="myVar1=!myVar1" ng-class="{open : myVar1}" ng-repeat="claim in claims">
{{ claim }}
</div>
这样就够了。
这里是 Plunker