[英]AngularJS ng-show if a property within an object array is set to false
如果array
没有对象将特定属性设置为false
我想隐藏div
。
该属性如下所示:
$scope.myObjArray = [
{"Id":"1","IsBuiltIn":true},
{"Id":"2","IsBuiltIn":true}
];
如果myObjArray
中没有IsBuiltIn
设置为false
对象,我想隐藏我的div
。 所以上面的array
应该隐藏div
。 以下应该显示它(因为至少有一个对象将IsBuiltIn
设置为false):
$scope.myObjArray = [
{"Id":"1","IsBuiltIn":true},
{"Id":"2","IsBuiltIn":true},
{"Id":"3","IsBuiltIn":false}
];
我尝试使用ForEach
解决这个问题但没有成功:
<div ng-show="myObjArray.ForEach(e, function(){e.IsBuiltIn})">
Hello, World!
</div>
这是我的plnkr 。
在Controller中,创建一个函数来检查数组中的任何对象是否具有使用Array#some
属性IsBuiltIn
false
值
$scope.containsFalsy = (arr) => arr.some(o => o.IsBuiltIn === false);
这是使用ES6 箭头函数语法。 上述功能相当于
$scope.containsFalsy = function (arr) {
return arr.some(function (obj) {
return obj.IsBuiltIn === false;
});
};
从View中调用该函数
<div ng-hide="containsFalsy(myObjArray)">
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); });
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.