在ngIf中创建动态范围

时间:2016-09-30 08:05:37

标签: angularjs

我已经检查过这里的所有解决方案,但找不到适合我的解决方案

基本上我在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;
}

由于

1 个答案:

答案 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]);
    }
}