Мне нужно закрыть любой открытый компонент, щелкнув вне этого компонента с помощью angularjs. Есть ли директива angular для размытия событий? Если нет, как я могу это сделать?
Какая замена события размытия jQuery в AngularJS?
Ответ 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.