AngularJS中jQuery模糊事件的替代是什么?

时间:2013-07-31 07:20:51

标签: javascript jquery angularjs onblur

当使用angularjs在该组件外部单击时,我必须关闭所有打开的组件。模糊事件是否有角度指令?如果没有,我该怎么做?

5 个答案:

答案 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指令。