2017-10-21 7 views
0

Mes données REVIENT ci-dessous:AngularJS Sélectionnez avec des options de ng-sur tableau d'objets

{ 
    "count": 0, 
    "QHPIssuerNames": [ 
     "NOV BCBS", 
     "mark issuer", 
     "Release 3 issuer", 
     "Los angles issuer" 
    ], 
    "QDPIssuerNames": [ 
     New One", 
     "jan issuer", 
     "Manage Issuer", 
     "test enrollment", 
     "testing issuer p" 
    ] 
} 

Et je veux ajouter une sélection à mon html charger les données du tableau.

<select 
    name="issuer" 
    id="issuer" 
    ng-init="vm.selectedData = vm.inputData.issuer[0]" 
    class="form-control" 
    ng-model="vm.inputData.issuer" 
    ng-options="label group by group for value in vm.inputData.issuer"></select> 

Here is the screenshot of how my dropdown should look like

jsfiddle

Répondre

0

Ma solution consiste à transformer l'object of arrays en et array of objects, j'ai essayé de créer une solution avec l'objet original, mais le problème est que je ne suis pas en mesure de créer de sélectionner plusieurs niveaux en utilisant l'objet. Il faut que l'objet soit scindé en éléments individuels pour que j'obtienne le résultat désiré, fondamentalement je boucle le tableau original et efface la première entrée qui est count:0, puisque ce n'est pas nécessaire dans le processus d'itération, puis assigne les valeurs au final tableau.

var app = angular.module('myApp', []); 
 

 
app.controller('MyController', function MyController($scope) { 
 
    vm = this; 
 
    vm.inputData = { 
 
    "count": 0, 
 
    "QHPIssuerNames": [ 
 
     "NOV BCBS", 
 
     "mark issuer", 
 
     "Release 3 issuer", 
 
     "Los angles issuer" 
 
    ], 
 
    "QDPIssuerNames": [ 
 
     "New One", 
 
     "jan issuer", 
 
     "Manage Issuer", 
 
     "test enrollment", 
 
     "testing issuer p" 
 
    ] 
 
    }; 
 
    vm.newArray = vm.inputData; 
 
    delete vm.newArray.count; 
 
    vm.finalArray = []; 
 
    for (var k in vm.newArray) { 
 
    for (var j of vm.newArray[k]) { 
 
     vm.finalArray.push({ 
 
     key: k, 
 
     value: j 
 
     }) 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-controller='MyController as vm' ng-app="myApp"> 
 
    <select name="issuer" id="issuer" class="form-control" ng-init="vm.selectedData = vm.finalArray[0]" ng-model="vm.selectedData" ng-options="x.value group by x.key for x in vm.finalArray"></select> 
 
</div>

+0

Je veux ajouter à l'avant du tableau d'objets deux chaînes (« Tout santé émetteur », « Tout émetteur dentaire », comme le montre l'image – dragonfly

+0

@dragonfly Pour cette première vous –

+0

@ Naren Murali - Je reçois json comme réponse d'une requête http, mais la chaîne ("All Health Issuer", "All Dental Issuer") ne fait pas partie de la réponse Je dois l'ajouter au tableau final – dragonfly