我有以下代码:
$scope.a = true;
$scope.b = true;
$scope.c = true;
$scope.myData = [{att: 'a'},{att: 'b'},{att:'c'} ]
过滤掉符合上述条件的所有对象的最佳方法是什么?
例如,现在我想要所有对象。
但是如果$scope.a = false
,我只想输出第二和第三个对象。
答案 0 :(得分:1)
看看下面的内容:
angular
.module('test', [])
.value('data', [{att: 'a'},{att: 'b'},{att:'c'}])
.run(function($rootScope, data) {
$rootScope.a = true;
$rootScope.b = true;
$rootScope.c = true;
$rootScope.myData = data;
$rootScope.update = function(value) {
$rootScope[value] = !$rootScope[value];
$rootScope.myData = data.filter((item) => $rootScope[item.att]);
}
})
.in {
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<section ng-app="test">
<button ng-class="{'in' : a}" ng-click="update('a')">a</button>
<button ng-class="{'in' : b}" ng-click="update('b')">b</button>
<button ng-class="{'in' : c}" ng-click="update('c')">c</button>
<article ng-bind="myData | json"></article>
</section>
答案 1 :(得分:0)
您可以使用javascript数组filter功能,如下所示
$scope.a = true;
$scope.b = false;
$scope.c = true;
$scope.myData = [{
att: 'a'
}, {
att: 'b'
}, {
att: 'c'
}];
var res = $scope.myData.filter(function(obj) {
if ($scope[obj.att]) return obj;
});
console.log(res);