Проблемы между ngBlur на входе и элементами списка из поиска в этом поле ввода

У меня есть поле поиска с тегом ввода, а после него упорядоченный список с параметрами для поиска вводимого текста.

Входные данные связаны с директивой ngBlur для очистки поля поиска и закрытия списка предлагаемых элементов.

Моя проблема в том, что когда я хочу щелкнуть элемент, он должен перенаправить на страницу описания, но ngBlur сначала обнаруживает событие за пределами ввода и закрывает все.

<input class="search-box" ng-blur="closeSearch()">
<ul ng-repeat="product in products">
<li>{{product.name}}</li>
</ul>

Эструктура что-то в этом роде. У кого-нибудь есть решение для этого?


person vicky_864    schedule 20.12.2015    source источник


Ответы (1)


Я не знаю, лучший ли это способ, но мне удается позаботиться о ng-blur, используя тайм-аут и логическое значение:

 $scope.stopPropagation = false;

  $scope.click = function() {
    alert("click");
    $scope.stopPropagation = true;
  }

  $scope.change = function() {
    $timeout(function() {
      if (!$scope.stopPropagation)
        $scope.filter = "asdasd";

      $scope.stopPropagation = false;
    }, 125);
  }

Здесь я помещаю строку «asdasd» в изменение функции (запускаемое ng-blur), чтобы не получить результатов. Я применяю изменение через 125 мс, чтобы функция щелчка запускалась до того, как данные из списка будут удалены.

Ссылка: http://codepen.io/armellajuan/pen/qbNdVp

person Juan Marcos Armella    schedule 20.12.2015