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.
在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)
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)