首页 > 解决方案 > ng-if 在 ng-repeat 中总是被评估为 true

问题描述

我在一个对象数组上循环,我想根据数组中每个项目的字段值显示一些东西。为此,我有一个 ng-repeat 遍历我的数组,以及一个 ng-if 评估我当前的项目值是否被占用。

由于某种原因,ng-if 似乎总是被评估为真(或根本不评估?)

编辑.html

<div data-ng-app='myApp' data-ng-controller='myCtrl'>

  <div>
    <div ng-repeat="legalRemedy in legalRemedies">
      <div ng-if="legalRemedy.erased === false">
        Only valid stuff here
      </div>
    </div>
  </div>

</div>

控制器.js

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {

  $scope.bulletin.legalRemedies = [{
    "erased": true // invalid stuff
  }];

});

这是 jsfiddle (不应该显示任何数据,因为已擦除的属性为真) https://jsfiddle.net/vtcLpzmx/2/

这可能很愚蠢,但我找不到原因,这让我很生气

标签: javascripthtmlangularjs

解决方案


您的代码运行良好。就在你的jsfiddle中,我认为你错过了添加角度脚本。这样它就不会将该小提琴视为角度应用程序。

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
  $scope.bulletin = {};
  $scope.bulletin.legalRemedies = [{"erased" : true}]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div data-ng-app='myApp' data-ng-controller='myCtrl'>

  <div>
  
    <div ng-repeat="legalRemedy in bulletin.legalRemedies">
      <div ng-if="!legalRemedy.erased">
        Only valid stuff here
      </div>
    </div>
  </div>

</div>


推荐阅读