当使用angularjs在该组件外部单击时,我必须关闭所有打开的组件。模糊事件是否有角度指令?如果没有,我该怎么做?
答案 0 :(得分:25)
如果您不想使用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()" />
基本上,该指令的作用是绑定元素的blur事件(在我们的示例中为输入),然后在触发事件时(我们保留输入)angular将应用指令中的内容。因此,在我们的情况下,如果我们保留输入,doFoo()
将被触发。
此处的Plunker:http://plunker.co/edit/J4ZEB6ppvkiIvdW9J2VU?p=preview
答案 1 :(得分:7)
您可以使用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>
答案 2 :(得分:4)
从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
。
答案 3 :(得分:1)
原生ng-blur“在最新的不稳定中根本不起作用。:(” http://docs.angularjs.org/api/ng.directive:ngBlur
哟可以按照这篇文章的步骤解决这个问题 “AngularJs中没有对blur事件的直接支持。但我们可以通过创建指令来添加对blur事件的支持。” http://coding-issues.blogspot.in/2013/10/angularjs-blur-directive.html
答案 4 :(得分:0)
支持焦点和模糊事件的指令将包含在下一个AngularJS版本(reference)中,该版本应尽快推出(我的猜测是在下个月内)。如果您不能等待,就像JQueryGuru建议的那样,您可以使用AngularUI项目中的uiEvent
指令。