我有以下设置

  $scope.array =
    [
      {propertyA: "test",
       propertyB: {
                   propertyC: [true, true, false]
                  }
      },
      {propertyA: "test2"},
      {propertyA: "test3"}
    ]

然后
<div ng-repeat="item in array| filter :{propertyB: ''} :true">
     {{item.propertyA}}
</div>

所以问题是:
  • 此设置不显示任何内容
  • 如果我更改为|filter :{propertyB: '!!'} :true,则不显示任何内容
  • 如果我更改为|filter :{propertyB: undefined} :true,它将显示所有内容

  • 我不知道。

    目标:我想显示未定义propertyB的项目,在其他情况下,则显示相反的状态。

    编辑1:如果我用angular.equals(item.propertyB, undefined)遍历数组,我会得到false, true, true
    编辑2:jsfiddle UPDATED

    编辑3:我已经更新了问题

    最佳答案

    $scope.array =
    [
      {propertyA: "test", propertyB: "test2"},
      {propertyA: "test2"},
      {propertyA: "test3"}
    ];
    $scope.filteredArray =[];
    angular.forEach($scope.array,function(eachData){
       if(angular.isUndefined(eachData.propertyB))
       $scope.filteredArray.push(eachData);
    });
    

    而且$scope.filteredArray是您想要的数组,您可以重复使用它来绑定(bind)html。

    10-04 17:10