【问题标题】:ng-if inside ng-repeat won't workng-if 在 ng-repeat 中不起作用
【发布时间】:2023-03-04 00:35:01
【问题描述】:

我的 HTML 中有这段代码,我用 Angular 填充:

<table id="myTable">
    <tr>
        <th>Id</th>
        <th>desc</th>
        <th>prod kg</th>
        <th>index</th>
    </tr>
        <tr ng-repeat="x in maq" ng-if="{{ x.index }}=='0'" id="{{ x.index }}">                   
                <td style="border: 1px solid black;">{{ x.codigo }}</td>
                <td style="border: 1px solid black;">{{ x.desc }}</td>
                <td style="border: 1px solid black;">{{ x.prod_24_h_kg }}</td>
                <td style="border: 1px solid black;">{{ x.index }}</td>
    </tr>
</table>

到目前为止没有问题。但是,如您所见,我想为每一行制作和 ng-if,让我们说:

{{ x.index }}=='0'

我不想显示该行。我尝试了许多“”和“”的组合,但没有成功。有人看到解决方案了吗?

【问题讨论】:

标签: angularjs html angular-ng-if


【解决方案1】:

无需在ng-if 指令中使用插值{{}} 指令,它直接采用将针对当前范围进行评估的表达式。

ng-if="x.index ==0"

实现相同目的的另一种选择是使用过滤器。

ng-repeat="x in maq | filter: {index: 0} as filterdMaq"

同样的过滤也可以在控制器内部发生,这也有助于提高性能。

$http.get('data.json').then(function(response){
    $scope.dataCopy = response.data; //this is original copy of an maq.
    //filtered maq
    $scope.maq = $filter('filter')(angular.copy($scope.dataCopy), { index: 0}, true);
});

【讨论】:

  • 如果索引值要发生变化,那么您还必须对滑块更改事件进行过滤..
  • 是的,请确保您正在过滤 maq 的本地副本。不再在服务器上请求 maq
  • 我会尝试并通知您。我每次都在检索数据,我知道这很糟糕,但现在,至少 data.json 将存储在本地。
  • 你需要在你的控制器函数上添加$filter依赖
  • 好的,通过在过滤器的末尾添加 true 即可。结果是这样的: $scope.maq = $filter('filter')(angular.copy($scope.dataCopy), { index:maquina }, true);
【解决方案2】:

您不需要使用 {{ }}。只需打印 x.index=='0'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多