2017-09-02 9 views
0

1つのngrepeatで2つのJSON配列値を取得したいとします。 MM:1つのngrepeatから2つのjson値を取得するには?

var app = angular.module('testApp',[]); 
 
app.controller('testCtrl',function($scope){ 
 
    $scope.res ={}; 
 
    $scope.res.fsus = [ 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "var" 
 
     }, 
 
     "time": { 
 
      "timeA": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "car" 
 
     }, 
 
     "time": { 
 
      "timeA": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "car" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "car" 
 
     }, 
 
     "time": { 
 
      "timeA": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "ban" 
 
     }, 
 
     "time": { 
 
      "timeA": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    } 
 
]; 
 

 
$scope.opts = []; 
 
angular.forEach($scope.res.fsus,function(key,value){ 
 
    if(($scope.opts.indexOf(key.statusMessageType.MasterConsignment.ReportedStatus.ReasonCode , 0)) <= -1){ $scope.opts.push(key.statusMessageType.MasterConsignment.ReportedStatus.ReasonCode); 
 
    }; 
 
if(($scope.opts.indexOf(key.statusMessageType.MasterConsignment.time.timeA , 0)) <= -1){ $scope.opts.push(key.statusMessageType.MasterConsignment.time.timeA); 
 
    }; 
 
}); 
 
    
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script> 
 
<body ng-app="testApp" ng-controller="testCtrl"> 
 
<li ng-repeat="test in opts"> 
 
    <span class="step"> {{test}} 
 
    </span> 
 
    <span class="title"> {{???}} 
 
    </span> 
 
</li> 
 
</body>

そして、私は今回もHH @ YYYY-DD-MMの形式を変更したいです。

ありがとうございます。

+0

ちょっと答えが助けてくれましたか? – Sajeetharan

答えて

0

あなたはangular.forEachを使用してステータスと時間を持つオブジェクトを作成して、NG-繰り返し

$scope.opts = []; 
angular.forEach($scope.res.fsus,function(key,value){ 
if((($scope.opts.indexOf(key.statusMessageType.MasterConsignment.ReportedStatus.ReasonCode , 0)) <= -1) && (key.statusMessageType.MasterConsignment.time)){ $scope.opts.push({'status':key.statusMessageType.MasterConsignment.ReportedStatus.ReasonCode,'time':key.statusMessageType.MasterConsignment.time.time}); 
    }; 
}); 

DEMO

var app = angular.module('testApp',[]); 
 
app.controller('testCtrl',function($scope){ 
 
    $scope.res ={}; 
 
    $scope.res.fsus = [ 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "var" 
 
     }, 
 
     "time": { 
 
      "time": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "car" 
 
     }, 
 
     "time": { 
 
      "time": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "car" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "car" 
 
     }, 
 
     "time": { 
 
      "time": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    { 
 
    "statusMessageType": { 
 
     "MasterConsignment": { 
 
     "ReportedStatus": { 
 
      "ReasonCode": "ban" 
 
     }, 
 
     "time": { 
 
      "time": "2017-10-01T10:15:00.000Z" 
 
     } 
 
     } 
 
    } 
 
    } 
 
]; 
 

 
$scope.opts = []; 
 
angular.forEach($scope.res.fsus,function(key,value){ 
 
if((($scope.opts.indexOf(key.statusMessageType.MasterConsignment.ReportedStatus.ReasonCode , 0)) <= -1) && (key.statusMessageType.MasterConsignment.time)){ $scope.opts.push({'status':key.statusMessageType.MasterConsignment.ReportedStatus.ReasonCode,'time':key.statusMessageType.MasterConsignment.time.time}); 
 
    }; 
 
}); 
 
    
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script> 
 
<body ng-app="testApp" ng-controller="testCtrl"> 
 
<li ng-repeat="test in opts"> 
 
    <span class="step"> {{test.status}} 
 
    </span> 
 
    <span class="title"> {{test.time | date:'MM/dd/yyyy @ h:mma'}} 
 
    </span> 
 
</li> 
 
</body>

+0

それは働いていますが。それは私に与えている。重複値も。しかし、前のコードは重複した値を削除します。 –

+0

あなたはちょうど@Sajeestharan – Sajeetharan

+0

のチェックを追加する必要があります。コメントをいただきありがとうございます。しかし、すべては以前と同じです。それは仕事でなければなりません。 –

0

にこれはあなたのために役立つことを使用することができます。

var jsonArray='your json array here'; 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script> 
    <body ng-app="testApp" ng-controller="testCtrl"> 
    <li ng-repeat="test in jsonArray"> 
     <span class="step"> {{test.statusMessageType.MasterConsignment.ReportedStatus.ReasonCode}} 
     </span> 
     <span class="title"> {{test.statusMessageType.MasterConsignment.time.timeA | date:'MM/dd/yyyy @ h:mma'}} 
     </span> 
    </li> 
    </body> 
関連する問題