2016-09-29 9 views
-2

私は以下のJSONレスポンスを持っています。私は選択したロールに基づいて自分のロール情報を設定する必要があり、roleInfo配列でロール情報を移動しましたが、問題はキーと値を設定できません私はその値を得ることができましたが、テーブルに入ることができませんでした。キーとその値をテーブルに移動できませんでした。 QAと開発をサブキーのホワイトボックステストとブラックボックステストで移動する必要があります。私のforループは終了時にエラーになります。角度jsのforループを処理する

JSON:

{ 
     "json": { 
     "response": { 
      "servicetype": "1", 
      "functiontype": "10011", 
      "statuscode": "0", 
      "statusmessage": "Success", 
      "data": { 
      "unassignedroles": [ 
       {"rolename":"1", 
       "roleinformation": { 
        "QA": [ 
        { 
         "White Box Testing": 0 
        }, 
        { 
        "Black Box Testing": 10 
        } 

        ], 
         "Development": [ 
        { 
         "White Box Testing": 0 
        }, 
        { 
        "Black Box Testing": 10 
        } 

        ] 
       } 
       }, 
       { 
`    "rolename":"2"`, 
       "roleinformation": { 
        "1": [ 
        { 
         "A": 0 
        } 
        ] 
       } 
       } 

JS:

 var roleInfo = []; 
     UserService.getAssignRoles(json).then(function(response) { 

if (response.json.response.statuscode == 0 && response.json.response.statusmessage == 'Success') 
{ 
    $scope.model.assignroles = [], assignrolesArray = []; 

    var unasresdata = response.json.response.data.unassignedroles; 
    var assresdata = response.json.response.data.assignedtoles; 

    assignrolesArray = unasresdata.concat(assresdata); 

    $scope.model.assignroles = assignrolesArray; 
     for(var i = 0; i < assignrolesArray.length ; i++){ 

     if (($scope.model.rolename === assignrolesArray[i].rolename) && (assignrolesArray[i].rolename !== undefined)){ 
      roleInfo = assignrolesArray[i].roleinformation; 
      for (i in roleInfo) 

    }  
    } 

    } 
    }); 

HTML:

<select class="form-control" name="role" 
     ng-model="model.rolename" 
     ng-change="getAssignRole(data,model.rolename)"> 
     <option selected>Select Roles</option> 
     <option ng-repeat="role in model.assignroles track by $index" 
     value="{{role.rolename}}">{{role.rolename}}</option> 
</select>  
<div>   
     <table class="smalltable"> 
      <thead> 
       <tr ng-repeat="i(key, value) in roleInfo"> 
        <td>{{ key }}</td> 
        <td ng-repeat="details in value"> 
    `     <p ng-repeat"(subkey, subvalue) in details">{{ subkey }} : {{ subvalue }}</p> 
        </td> 
       </tr> 
      </thead> 
     </table> 
    </div> 
+1

は、あなたはそれのためplunkerを追加することができますか? –

+0

こんにちは、私はREST API経由でこの応答を取得します。私はそれをplunkerすることはできません恐れている。 –

+0

JSコードの継ぎ目が不完全である。 'for(i in roleInfo)'には内容がありません... – Daniel

答えて

0

使用済みangular.extend()roleInfo

$scope.roleInfo={}; 

for(var i = 0; i < assignrolesArray.length ; i++){ 
      $scope.roleInfo = angular.extend($scope.roleInfo,assignrolesArray[i].roleinformation);   

    } 
012のオブジェクトをconcateします

は、以下のコードを参照してplunker link

<!DOCTYPE html> 
<html> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<body> 

<div ng-app="myApp" ng-controller="myCtrl"> 

<div>  
     <table> 
      <thead> 
       <tr ng-repeat="(key,value) in roleInfo"> 
        <td>{{ key }}</td> 
        <td ng-repeat="details in value"> 
         <p ng-repeat="(subkey, subvalue) in details"> 
          {{subkey}}:{{subvalue}} 
         </p> 
        </td> 


       </tr> 
      </thead> 
     </table> 
    </div> 

</div> 

<script> 
var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope) { 

var response = 
{ 
    "json": { 
     "response": { 
      "servicetype": "1", 
      "functiontype": "10011", 
      "statuscode": "0", 
      "statusmessage": "Success", 
      "data": { 
       "unassignedroles": [{ 
        "rolename": "1", 
        "roleinformation": { 
         "QA": [{ 
           "White Box Testing": 0 
          }, { 
           "Black Box Testing": 10 
          } 

         ], 
         "Development": [{ 
           "White Box Testing": 0 
          }, { 
           "Black Box Testing": 10 
          } 

         ] 
        } 
       }, { 
        "rolename": "2", 
        "roleinformation": { 
         "1": [{ 
          "A": 0 
         }] 
        } 
       }] 

      } 
     } 
    } 
}; 

var unasresdata = response.json.response.data.unassignedroles; 
var assresdata = [{ 
        "rolename": "1a", 
        "roleinformation": { 
         "QA": [{ 
           "White Box Testing": 0 
          }, { 
           "Black Box Testing": 10 
          } 

         ], 
         "Development": [{ 
           "White Box Testing": 0 
          }, { 
           "Black Box Testing": 10 
          } 

         ] 
        } 
       }, { 
        "rolename": "2a", 
        "roleinformation": { 
         "1": [{ 
          "A": 0 
         }] 
        } 
       }]; 

    var assignrolesArray = unasresdata.concat(assresdata); 

    console.log("This is assignedrolesArray : "+ assignrolesArray); 
    $scope.roleInfo={}; 

for(var i = 0; i < assignrolesArray.length ; i++){ 
      $scope.roleInfo = angular.extend($scope.roleInfo,assignrolesArray[i].roleinformation);   

    } 



}); 
</script> 



</body> 
</html> 
関連する問題