Angularjs доступ к области видимости для динамических элементов

0

У меня есть 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.

Кто может сделать мой день :)

  • 0
    Просто попробуйте использовать ng-required="location_type=='FIXED'" на входе .
Теги:
scope
dynamic
angular-ng-if

2 ответа

2
Лучший ответ

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

  • 0
    Не нужно инициализировать элемент внутри парентобья. $ scope.parentObj = {} работает
  • 0
    Спасибо за решение
Показать ещё 1 комментарий
0

Вы пробовали ng-required="boolValueOrExpression"? Это условная проверка в вашем случае.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню