我已经检查过这里的所有解决方案,但找不到适合我的解决方案
基本上我在ngRepeat中使用ngIf,因此,根据每个块的ID,触发ngIf的条件会有所不同,如下所示
<div ng-if="doSomething_ID1"><div>
<div ng-if="doSomething_ID2"><div>
<div ng-if="doSomething_ID3"><div>
<div ng-if="doSomething_ID4"><div>
如果我在ngRepeat语句中写上述内容,这是正确的方法吗?因为我在下面试过,但它并没有为我工作
<div ng-repeat="this in these">
<div ng-if="'doSomething_'+ this.id"><div>
<div>
此外,如果我将值从控制器传递到上面的动态范围,我可以这样做吗?
for (var i=0; i<these.length; i++){
$scope["doSomething_" + these[i].id] = someValueHere;
}
由于
答案 0 :(得分:2)
如果需要循环一组值,请创建一个仅包含这些值的新数组,并在模板中无条件地循环。模板中的条件应仅用于与视图相关的事物,而不是用于业务逻辑。例如:如果帖子有任何评论,则显示评论框;当前用户登录时显示注销按钮。
不是将doSomething_IDX
添加到作用域,而是将一个对象数组添加到作用域。在该数组中,将要显示的所有项目放在模板中。
<div ng-repeat="item in $ctrl.itemlist">
item id: {{ item.id }}
<div>
在您的控制器中:
this.itemlist = []
for (var i=0; i<these.length; i++) {
var item = these[i];
// filter list here
if (meetsCondition(item)) {
this.itemlist.push(these[i]);
}
}