У меня есть 2 поля ввода радиосигнала
<input type="radio" name="location_type" ng-model="location_type" value="ANYWHERE" required> Anywhere
<input type="radio" name="location_type" ng-model="location_type" value="FIXED" required> Fixed
Если выбранная радиостанция имеет значение "FIXED", другое текстовое поле отображается с помощью ng-if. Это текстовое поле имеет обязательную проверку.
<div ng-if="location_type == 'FIXED'">
<input type="text" class="form-control" name="city" ng-model="city" placeholder="Enter City" ng-blur="cname=''" ng-focus="cname='bold'" required>
</div
Я не получаю значение $scope.city
в контроллере, потому что входной city
отображается динамически, когда я нажимаю на переключатель со значением значения FIXED
.
Если я использую ng-show
вместо ng-if
, я получаю $scope.city
переменной переменной $scope.city
в контроллере, но в этом случае проверка для входа в город работает, даже когда я выбираю радиокнопку ANYWHERE
. Поле города будет скрыто, и его проверка не должна работать, когда я выбираю радиокнопку ANYWHERE
.
Кто может сделать мой день :)
ng-if
директива create new child scope
.
В соответствии с вашим html вы назначаете city
этой child scope
а не родительской областью, которая является вашим контроллером.
Таким образом, недоступно в контроллере.
Итак, вам нужно сделать что-то подобное.
Объявлять объект в родительском контроллере следующим образом;
$scope.parentObj = {};
И измените свой html;
<input type="text" class="form-control" name="city" ng-model="parentObj" required>
Теперь область вашего ребенка получит свойство наследуемого объекта от контроллера;
Таким образом, он будет отображаться в контроллере.
Вот рабочий Plunker
Вы пробовали ng-required="boolValueOrExpression"
? Это условная проверка в вашем случае.
ng-required="location_type=='FIXED'"
на входе .