Угловая 1/ нг-если разовая привязка только в условии

В моем шаблоне у меня есть:

<div ng-if="$ctrl.show()">
  <input class="form-control" type="text">
</div>

В моем компоненте

  show() {
    if (angular.isDefined(this.parking.parkingType)) {
      return this.parking.parkingType.labelKey === 'parking_type.air'
    }
  }

Я хочу, чтобы angular обрабатывал функцию только при нажатии на выбранный вход (ui-select) по атрибуту on-select="$ctrl.show()":

 <ui-select ng-model="$ctrl.parking.parkingType"
             on-select="$ctrl.show()">
    <ui-select-match allow-clear="true">
        <span>{{ $select.selected.label }}</span>
    </ui-select-match>
    <ui-select-choices repeat="item in $ctrl.parkingType | filter: { label: $select.search }">
        <span ng-bind-html="item.label"></span>
    </ui-select-choices>
  </ui-select>

Этот случай может быть похож на пример: запуск функции только при нажатии на ng-click

1 ответ

Решение

Измените ваше ng-шоу на переменную и сохраняйте on-select="$ctrl.show()" как есть

По вашему мнению:

<div ng-if="$ctrl.shouldShow">
  <input class="form-control" type="text">
</div>

В вашем компоненте:

$ctrl.show = function() {
  if (angular.isDefined(this.parking.parkingType)) {
    $ctrl.shouldShow = (this.parking.parkingType.labelKey === 'parking_type.air')
  }
}

Рекомендуется не использовать функции в ng-if, ng-show и ng-hide, потому что это снижение производительности

Другие вопросы по тегам