2016-11-22 1 views
0

Ich benutze eckig ausgewählt für die Auflistung der Optionen. Aber wie ng-Optionen für verschachtelte Array verwenden?Wie benutzt man ng-Optionen für verschachtelte Arrays?

<select chosen 
option="countries" 
ng-model="data" 
    ng-options="??"> 
</select> 

Dies ist mein Array.

$scope.data= [ 
    { 
"Name": "Cat1", 
"CategoryID": "1", 
"actions": [ 
    { 
    "ActionName": "action1", 
    }, 
    { 
    "ActionName": "action2", 

    } 
] 
}, 
{ 
"Name": "cat 2", 

"actions": [ 
    { 
    "ActionName": "action3", 
    }, 
    { 
    "ActionName": "action4", 

    } 
] 
} 
    { 
"Name": "cat 3", 
"actions": [ 
    { 
    "ActionName": "action5", 
    }, 
    { 
    "ActionName": "actions 5", 

    } 
] 
} 

] 

Ich möchte die Option Gruppe von Kategorienamen liegen zur Liste
cat1
action1
action2
cat2
action3
Action4
cat3
action5
action6

Antwort

0

Sie können die "Daten" parsen und in das unten stehende Format konvertieren und die unten gezeigten ng-Optionen verwenden.

$scope.countries = [ 
    { actionName: 'action1', catName: 'cat1' }, 
    { actionName: 'action2', catName: 'cat1' }, 
    { actionName: 'action3', catName: 'cat2' }, 
    { actionName: 'action4', catName: 'cat2' }, 
    { actionName: 'action5', catName: 'cat3' }, 
    { actionName: 'action6', catName: 'cat3' } 
]; 

<select ng-model="country" 
     ng-options="item.actionName group by item.catName for item in countries"> 
</select> 

Weitere Informationen über ng-Optionen unter diesem Link https://www.undefinednull.com/2014/08/11/a-brief-walk-through-of-the-ng-options-in-angularjs/

0

ich ein neues Array in Javascript erstellt haben und iteriert durch ng-Optionen, überprüfen Sie bitte den folgenden Link

https://plnkr.co/edit/i9LfV50Y2gXElFzVgFDl?p=preview

Ich habe ein Array erstellt und alle Ihre Werte hineingeschoben, es funktioniert gut

 $scope.uniqueOptions = []; 

for (var i = 0; i < $scope.data.availableOptions.length; i++) 
    $scope.uniqueOptions.push($scope.data.availableOptions[i].Name); 
    //alert($scope.data.availableOptions[i].Name); 
    for (var j = 0; j < $scope.data.availableOptions[i].actions.length; j++) 
    // alert($scope.data.availableOptions[i].actions.length); 
     //alert($scope.data.availableOptions[i].actions[0].ActionName); 
      $scope.uniqueOptions.push($scope.data.availableOptions[i].actions[j].ActionName; 

enter code here