我知道ngRepeat
和forEach
,但我需要的或多或少是这两者的混合体。我的意思是:
我在$scope
中有一个列列表。我可以用
<th ng-repeat="col in columns">{{ col.label }}</th>
那将呈现
<th>Col A</th>
<th>Col B</th>
<th>Col C</th>
在$scope
我有一个变量(mode
)。当此变量的值为admin
时,将使用ng-show
显示一些与管理员相关的html标记。此外,当此变量为admin
时,我希望我的列可以像这样呈现
<th>config</th>
<th>Col A</th>
<th>config</th>
<th>Col B</th>
<th>config</th>
<th>Col C</th>
有没有办法以某种方式使用ng-repeat
,以便我可以同时渲染配置和标签列?也许像是
<repeat for="col in columns">
<th ng-show="mode == 'admin'">config</th>
<th>{{ col.label }}</th>
</repeat>
或者,我是唯一一个创建新列表的选项,该列表已经包含管理列,并且每次更改forEach
时都会重新生成(mode
)?对此最好的方法是什么?
答案 0 :(得分:1)
最好使用返回列的函数
$scope.getColumns = function() {
if (mode != 'admin') {
return columns;
} else {
var c = new Array(columns.length * 2);
for (var i=0; i< c.length; i++) {
c[i] = i % 2 == 0 ? 'config' : columns[parseInt(i/2)];
}
return c;
}
}
模板
<th ng-repeat="column in getColumns()" ng-bind="column"></th>
答案 1 :(得分:1)
您可以尝试使用ng-repeat-start和ng-repeat-end。像这样:
<div ng-repeat-start="foo in foos">{{ foo.something }}</div>
Anything in here
<div><div ng-repeat-end="">This code will repeat and should work</div>
</div>
有关详细信息,请参阅https://docs.angularjs.org/api/ng/directive/ngRepeat。