Aktualizacja:
Jeśli chcesz się dostać bezpośrednio do odniesienia stosowanych w tej odpowiedzi, to jest tutaj:
referencyjny: Initial Selection In AngularJS ng-options with track by
Oto co pracował dla ja:
app.controller('fooController', function($scope){
$scope.roles = [{id:1, name:"Administrator"}, {id:2, name: "Student"}];
$scope.user = {};
$scope.user.roles = [ $scope.roles[0] ];
});
Wystąpił błąd w plunk, który nie został zainicjowany user
, poza tym Angular porównałby każdy obiekt w tablicy ng-options
do każdego elementu w tablicy ng-model
. Porównanie JavaScript nie porównywanie kątowe, porównywanie 2 obiektów nawet z tymi samymi właściwościami w JavaScript zwraca false (różne obiekty).
upadać: http://plnkr.co/edit/ccsAVvPACnN6Qzje7HcB?p=preview
.
To nie jest idealne. Zwykle chcesz skorelować te na podstawie identyfikatora lub tak, tutaj jest inny sposób:
W HTML, użyj track by
powiedzieć angularjs porównać identyfikatory zamiast całych obiektów:
<select multiple class="form-control"
data-ng-model="user.roles"
data-ng-options="role.name for role in roles track by role.id"
required=""></select>
wówczas w kontrolerze, można użyć dowolnego obiektu bez rzeczywiście w tablicy:
app.controller('fooController', function($scope){
$scope.roles = [{id:1, name:"Administrator"}, {id:2, name: "Student"}];
$scope.user = {};
$scope.user.roles = [ {id:1, name:"Administrator"} ];
});
upadać: http://plnkr.co/edit/NKLXrwqwk36YfhBSXILN?p=preview
Zauważ, że ja nawet nie ne ed właściwość name
. Chodzi o to, by później zrobić właściwy obiekt, ale teraz nie jest potrzebny do dopasowania, spróbuj bez niego!
.
Napisałem szczegółowy samouczek z towarzyszącym filmem dotyczącym początkowego problemu selekcji i jego odmian. Skupia się na pojedynczym wyborze, ale wybór wielokrotny polega na bezpośrednim użyciu tablicy obiektów zamiast jednego obiektu.
Sprawdź to, aby uzyskać więcej zrozumienia - wysoce zalecane:
Initial Selection In AngularJS ng-options with track by
.
Poinformuj mnie w komentarzach, jeśli wciąż zmagasz się z tym.
Naprawdę jasne wyjaśnienie! Dziękuję bardzo za pomoc. – lvarayut
Uratował mnie jeden dzień mojego życia dzięki –
Zawsze miło mi pomóc :) – Meligy