2013-11-26 14 views
5

Próbuję wstępnie wybrać opcje na moim multiselect. Aby moja sprawa była jasna, zrobiłem JSFiddle.AngularJS: Preselekcja opcji wielokrotnych Wybierz

<select ng-model="properties" id="props" multiple 
ng-options="option.name group by option.category for option in options"></select> 

Niestety, jestem związany ze sposobem, w jaki obiekt jest odbierany, więc przypuszczam, że potrzebuję atrybutu ng-options.

Czy ktoś ma pomysł, jak mogę uzyskać zarówno "Kapitan Ameryka" i "Dr. Doom "wybrany na ładunek?

Odpowiedz

2

Jesteś bardzo blisko, dwie zmiany. Zdefiniować atrybuty w kontrolerze jak ten

$scope.properties = ["Captain America", "Dr. Doom"]; 

i dodać mały kawałek do NG-opcji jak ten

ng-options="option.name as option.name group by option.category for option in options" 

swojej option.name jak określi to, co zapisane funkcja wygląda w $ zakresu .properties

+0

Można również wykonać $ scope.properties = ["4", "9"] i użyć option.id jako option.name –

3

Spróbuj zmienić swój kod kontrolera:

function TestCtrl($scope) { 

    var myOptions = [{ 
     "id": "4", 
     "name": "Captain America", 
     "categoryId": "1", 
     "category": "Heroes" 
    }, { 
     "id": "5", 
     "name": "Iron Man", 
     "categoryId": "1", 
     "category": "Heroes" 
    }, { 
     "id": "10", 
     "name": "Magneto", 
     "categoryId": "2", 
     "category": "Vilains" 
    }, { 
     "id": "9", 
     "name": "Dr. Doom", 
     "categoryId": "2", 
     "category": "Vilains" 
    }]; 

    $scope.options = myOptions; 


    $scope.properties = [myOptions[0], myOptions[3]]; 
} 

Objaśnienie: ustawiasz swoje wybrane opcje (Właściwości) do różnych instancji obiektów niż te, które składają się na pełną listę. Użyj tych samych referencji obiektu, jak pokazano powyżej.

+0

Tak, próbowałem tego rozwiązania - http://jsfiddle.net/k85M4/ – Eugene

Powiązane problemy