Подтвердить что ты не робот

Какая замена события размытия jQuery в AngularJS?

Мне нужно закрыть любой открытый компонент, щелкнув вне этого компонента с помощью angularjs. Есть ли директива angular для размытия событий? Если нет, как я могу это сделать?

4b9b3361

Ответ 1

Если вы не хотите использовать angular -ui ui-event, вы также можете создать небольшую директиву до тех пор, пока не будет выпущена следующая версия Angular.

app.directive('ngBlur', function() {
  return function( scope, elem, attrs ) {
    elem.bind('blur', function() {
      scope.$apply(attrs.ngBlur);
    });
  };
});

Просто поставьте директиву там, где она вам нужна:

<input type="text" ng-model="foo" ng-blur="doFoo()" />

В основном то, что делает директива, заключается в привязке события размытия элемента (в нашем примере ввода), а затем, когда событие запускается (мы оставляем вход), angular будет применять то, что находится в директиве. Поэтому в нашем случае doFoo() будет запущен, если мы оставим вход.

Plunker здесь: http://plunker.co/edit/J4ZEB6ppvkiIvdW9J2VU?p=preview

Ответ 2

Вы можете использовать Angular UI @http://angular-ui.github.io/ui-utils/, которые обеспечивают событие Blurs, Focus, Double-Clicks или привязывают обратный вызов к любому событию не поддерживается со стороны Angular Js

Ниже приведен один пример примера размытия:

<input ui-event="{ blur : 'blurCallback()' }">

<script>
$scope.blurCallback = function() {
alert('Goodbye');
};
</script>

Ответ 3

В соответствии с Angular 1.2.24 * существует директива ng-blur.

// View
<input 
    type="text"
    placeholder="Hello World!"
    ng-model="foo.bar"
    ng-blur="onBlur($event)"
    >

// Controller
$scope.onBlur = function($event) {
    return $event;
}

* Я не знаю, в чем была введена Angular версия ng-blur.

Ответ 4

Нативный ng-blur "Не работает вообще в последней неустойчивой.:(" http://docs.angularjs.org/api/ng.directive:ngBlur

Yo может исправить это, следуя шагам этого сообщения "Прямой поддержки размытия в AngularJs нет, но мы можем добавить поддержку размытия, создав директиву". http://coding-issues.blogspot.in/2013/10/angularjs-blur-directive.html

Ответ 5

Директивы, поддерживающие фокус и размытие событий, будут включены в следующий выпуск AngularJS (ссылка), который должен быть скоро (моя догадка находится в пределах в следующем месяце). Если вы не можете ждать, как предположил JQueryGuru, вы можете использовать директиву uiEvent из проекта AngularUI.