Comment affecte-t-on les ngOptions
par défaut à travers les modèles parent / enfant?
Dans cette question, OP montre une forme de ngOptions
parent / enfant utilisant ngOptions
modèle
<select ng-model="x.site" ng-options="s.site for s in data"></select> <select ng-model="x.name" ng-options="b.name for b in x.site.buildings"></select>
manette
$scope.x = {}; $scope.data = [ { "site" : "Brands Hatch", "buildings" : [ { "name" : "Building #1" }, { "name" : "Building #2" }, { "name" : "Building #3" } ] },{ "site" : "Silverstone", "buildings" : [ { "name" : "Building #4" }, { "name" : "Building #5" }, { "name" : "Building #6" } ] } ];
Ce que vous verrez dans cette fourchette, c'est que les menus déroulants n'ont pas de valeurs par défaut — C'est-à-dire, l'option par défaut est " vide ". Dans un cas d'utilisation normal, cela ne pose pas de problème et les options par défaut sont facilement configurables par le contrôleur qui s'explique bien dans les documents .
ngOptions
? L'élément vide est causé par la valeur du modèle vide. Vous pouvez essayer de mettre le code suivant à la fin du contrôleur. L'astuce consiste à initialiser le site , le bâtiment et le plancher lorsque la page est chargée ainsi que lorsque la valeur du site est modifiée. J'espère que cela aide.
$scope.selected = { site: $scope.data[0], building: $scope.data[0].buildings[0], floor: $scope.data[0].floors[0] }; $scope.$watch('selected.site', function () { console.log($scope.selected.site); $scope.selected = { site: $scope.selected.site, building: $scope.selected.site.buildings[0], floor: $scope.selected.site.floors[0] }; });