AngularJS ng-show是否将对象数组中的属性设置为false

Mar*_*ndl 3 javascript arrays angularjs

我想隐藏一个div如果没有array特定属性设置的对象false.

该属性如下所示:

$scope.myObjArray = [
    {"Id":"1","IsBuiltIn":true},
    {"Id":"2","IsBuiltIn":true}
];
Run Code Online (Sandbox Code Playgroud)

div如果没有设置的对象myObjArray,我想隐藏我.所以上面应该隐藏了.以下应该显示它(因为至少有一个对象设置为false):IsBuiltInfalsearraydivIsBuiltIn

$scope.myObjArray = [
    {"Id":"1","IsBuiltIn":true},
    {"Id":"2","IsBuiltIn":true},
    {"Id":"3","IsBuiltIn":false}
];
Run Code Online (Sandbox Code Playgroud)

我试图用一个ForEach没有成功的方法解决这个问题:

<div ng-show="myObjArray.ForEach(e, function(){e.IsBuiltIn})">
    Hello, World!
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的plnkr.

Tus*_*har 5

在Controller中,创建一个函数来检查数组中的任何对象是否具有使用false该属性的值IsBuiltInArray#some

$scope.containsFalsy = (arr) => arr.some(o => o.IsBuiltIn === false);
Run Code Online (Sandbox Code Playgroud)

这是使用ES6 箭头函数语法.上述功能相当于

$scope.containsFalsy = function (arr) {
    return arr.some(function (obj) {
        return obj.IsBuiltIn === false;
    });
};
Run Code Online (Sandbox Code Playgroud)

从View中调用该函数

<div ng-hide="containsFalsy(myObjArray)">
Run Code Online (Sandbox Code Playgroud)

Plunker演示

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

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  $scope.myObjArray = [{
    "Id": "1",
    "IsBuiltIn": true
  }, {
    "Id": "2",
    "IsBuiltIn": true
  }];

  $scope.myObjArray1 = [{
    "Id": "1",
    "IsBuiltIn": true
  }, {
    "Id": "2",
    "IsBuiltIn": true
  }, {
    "Id": "3",
    "IsBuiltIn": false
  }];

  $scope.containsFalsy = (arr) => arr.some(o => o.IsBuiltIn === false);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp">
  <div ng-controller="MainCtrl">
    <div ng-hide="containsFalsy(myObjArray)">
      Hello, World!
    </div>


    <div ng-hide="containsFalsy(myObjArray1)">
      Can you see me?
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)