/ / Angularjs ng-options vybraná hodnota rozbaľovacieho zoznamu - javascript, angularjs

Angularjs ng-options vybraná hodnota dropdownlistu - javascript, angularjs

Zobrazujem roky v zozname rozšírení pomocou vlastnej smernice. Toto je šablóna smernice.

template: "<select class="form-control" ng-model="joining.Year" ng-options="year for year in Years"></select>"

Html je taký

<div years-dropdown range="50"></div>

Years je pole reťazcov.Pole Rok má na mojom modeli na strane servera reťazcový typ. Vybraná hodnota je správne uložená v databáze, ale keď znovu načítam stránku (načítam model z databázy), dostanem do svojho radiča správnu hodnotu, ale hodnota sa nezobrazí tak, ako je vybraté v rozbaľovací zoznam.

editovať O jednu vec viac, keď zmením výberrozbaľovací zoznam a skontrolujte html, že stále zobrazuje predvolenú hodnotu ako vybranú (prvá možnosť má vybraný atribút). Môj objekt rozsahu je však správne aktualizovaný.

odpovede:

1 pre odpoveď č. 1

Problém je, že $scope.joining.Year a Years[$index] nie je rovnaký odkaz na objekt. Neverím ngOptions smernica používa logiku ekvivalencie. Toto je oprava, ako to urobiť ručne (vložte to do svojho .then() funkcie:

for(var i = 0; i < $scope.Years.length; ++i) {
if(angular.equals($scope.Years[i], $scope.joining.Year) {
//the fix to get years[i] if it"s equal to joining.Year
$scope.Years[i] = $scope.joining.Year;
}
}

//finally, apply data into joining
angular.extend($scope.joining, data);