2017-07-08 33 views
0

我想找出一种方法来循环浏览JSON对象并挑出满足特定条件的对象。我需要创建一个新的JSON结果。 我有一个树形组件,在节点中有复选框。我只想提取被检查的节点。选中的节点可以通过"isSelected": true根据条件循环遍历JSON对象数组和外卖对象

我的JSON待识别 - https://pastebin.com/RHR2tAxZ

我新的角度和以前没有处理的JSON循环。任何人都可以帮我解决这个问题吗?

+0

“isSelected”:真有内部节点,以及你的JSON的节点1 ,基于哪个“isSelected”:是否要检查? – Vivz

+0

@vivz我也需要内部节点。 – Phoenix

回答

0

只需使用** isSelected财产上的复选框,

<input type="checkbox" ng-model="listitem.isSelected" > 

DEMO

var app = angular.module('myApp', []); 
 
app.controller('AppCtrl', function($scope, $http) { 
 
$scope.newList =[]; 
 
$scope.list= 
 
    [ 
 
    { 
 
    "node": [ 
 
     { 
 
     "node": [], 
 
     "pageName": "Upload Files", 
 
     "isSelected": false, 
 
     "node1": [], 
 
     "pagedefinitionId": 7 
 
     }, 
 
     { 
 
     "node": [], 
 
     "pageName": "Download Files", 
 
     "isSelected": false, 
 
     "node1": [], 
 
     "pagedefinitionId": 8 
 
     } 
 
    ], 
 
    "pageName": "Manage Files", 
 
    "isSelected": false, 
 
    "node1": [], 
 
    "pagedefinitionId": 4 
 
    }, 
 
    { 
 
    "node": [], 
 
    "pageName": "Vendor Request", 
 
    "isSelected": false, 
 
    "node1": [ 
 
     { 
 
     "isSelected": false, 
 
     "pageControlId": 89, 
 
     "elementIdentifier": "vendorRequest.add", 
 
     "pageDefinitionId": 355 
 
     }, 
 
     { 
 
     "isSelected": false, 
 
     "pageControlId": 90, 
 
     "elementIdentifier": "vendorRequest.submitForApproval", 
 
     "pageDefinitionId": 355 
 
     }, 
 
     { 
 
     "isSelected": false, 
 
     "pageControlId": 91, 
 
     "elementIdentifier": "vendorRequest.complete", 
 
     "pageDefinitionId": 355 
 
     } 
 
    ], 
 
    "pagedefinitionId": 355 
 
    } 
 
]; 
 
$scope.getselected = function(){ 
 
    angular.forEach($scope.list,function(key,value){ 
 
    console.log(key); 
 
     if(key.isSelected){ 
 
     $scope.newList.push(key); 
 
     } 
 
    }); 
 
} 
 
});
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 

 
<body> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
    <div ng-app="myApp" ng-controller="AppCtrl"> 
 
<div ng-repeat ="listitem in list"> 
 
    <label> 
 
    {{ listitem.pageName }} 
 
    </label> 
 
    <input type="checkbox" ng-model="listitem.isSelected" > 
 
</div> 
 
    <button ng-click="getselected()">getSelected</button> 
 
    <h1>selected ones{{newList}}</h1> 
 
    </div> 
 
</body> 
 

 
</html>

+0

好的,如果我使用该属性,我将获得在单独的JSON中选择的节点的完整列表? – Phoenix

+0

是的,你可以这样做 – Sajeetharan

+0

我不想显示的项目,但需要他们在一个JSON数组 – Phoenix