ng-attr не меняется на true

0

У меня есть вход, который выглядит так:

<input  type="text" autocomplete="off" name="itemCode" ng-model="item.itemCode" class="form-control" ng-attr-existing-item-validator="mode=='Add'" required>

который всегда называется директивой existing-item-validator, даже если режим не равен "Добавить", поэтому я попробовал

<input  type="text" autocomplete="off" name="itemCode" ng-model="item.itemCode" class="form-control" ng-attr-existing-item-validator="isAddMode()" required>

Однако isAddMode никогда не выполняется в моей области. Если я изменил вход на ng-attr-existing-item-validator = "{{isAddMode()}}, он выполнит его, но директива existing-item-validator все равно будет вызвана, хотя isAddMode() возвращает false.

Я что-то делаю с атрибутом ng-attr? Я ожидаю, что моя директива не будет вызвана, если она будет равна false.

Теги:

1 ответ

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

Установка параметра директивы в значение false не означает, что директива не создается, это означает, что вы передаете переменную в директиву, которую можно получить с помощью области действия или attr.

Хотя я не уверен, что вы можете активировать директиву динамически, вы можете обрабатывать поведение в директиве (например, отключать себя), когда в соответствии с параметром.

.directive('existingItemValidator', function(){
  return function (scope, element, attr) {
    if (attr.existingItemValidator === false) return;

    // continue other ops.
  }
});

Примечание. Если вы используете attr, вам нужно использовать {{}} для передачи вашего параметра

Ещё вопросы

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