/ / ngModel nie wiąże się z opcją select - angularjs

ngModel nie wiąże się z opcją select - angularjs

Nie mogę dowiedzieć się, dlaczego nie mogę powiązać z wybranym elementem tam jest mój kod:

<select ng-model="site" ng-change="getAll()">
<option value="SG1">SG1</option>
<option value="PZ1">PZ1</option>
<option value="NE1">NE1</option>
</select>

getAll () ostrzega o „witrynie”, ale zmienna nigdy nie jest aktualizowana. $ scope.site jest używany przez nerver z wyjątkiem metody getAll ()

  $scope.getAll = function () {
alert($scope.site);
}

Jeśli ustawię $ scope.site na wartość, jest ona wyświetlana, ale nigdy też nie aktualizuje

Edytować: Zapomniałem o dużym szczególe ... Zaznaczenie jest wyświetlane z dyrektywą ng-include

<section id="sectionLeft" ng-include="nav[navId]">

</section>

Odpowiedzi:

1 dla odpowiedzi № 1

ng-include tworzy nowy zakres, który prototypowo dziedziczyz kontrolera. Więc początkowo czytasz wybraną opcję ze swojego kontrolera, ale gdy element select zapisuje nową wybraną opcję, kończy się zapisem do dziedziczonego zakresu.

Zamiast tego możesz powiązać się z obiektem.

Kontroler:

    $scope.data = { site: "SG1" };
$scope.getAll = function() {
alert($scope.data.site);
}

Szablon:

    <select ng-model="data.site" ng-change="getAll()">
<option value="SG1">SG1</option>
<option value="PZ1">PZ1</option>
<option value="NE1">NE1</option>
</select>

Widzieć ta odpowiedź po więcej szczegółów.

Jeśli nie lubisz przełączać się na obiekt, spójrz w górę controller as składni i powiąż bezpośrednio z kontrolerem zamiast $scope.


0 dla odpowiedzi nr 2

Poprawiłem Twój kod i mogę uzyskać zaktualizowaną wartość w polu ostrzeżenia.

$scope.getAll = function() {
alert($scope.site);
};

Praca Fiddle