2013-07-31 12 views
13

我必須在使用angularjs單擊該組件外部時關閉任何打開的組件。是否有模糊事件的角度指示?如果不是,我該怎麼做?什麼是AngularJS中jQuery模糊事件的替代?

+0

第一個答案是正確的,但我想指出,這不是一個jqury事件,它是一個javascript事件。如果你想得到真正好的客戶端編程,試着找出在我的應用程序中使用它的頭號 – bigblind

回答

7

您可以使用角UI @http://angular-ui.github.io/ui-utils/其提供模糊,對焦,雙擊事件或綁定回調到任何情況下不原生角的js支持

下面是模糊事件的例子之一:

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

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

下的jquery,但在模型值更改之前,ui-event會觸發。我在函數中調用函數測試(ng-model)ui-event = {blur:}它會告訴我以前的值,並且在第一時間undefined –

0

指令支持的重點和模糊事件將被列入下一個AngularJS釋放(reference),這應該很快就會出來(我的猜測是在未來一個月內)。如果你等不及,就像JQueryGuru建議的那樣,你可以使用AngularUI項目中的uiEvent指令。

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()" /> 

基本上指令確實是綁定元素的模糊事件(在本例中輸入),然後當事件是什麼被解僱(我們離開輸入)角將適用於指令中的內容。因此,在我們的情況下,如果我們離開輸入,doFoo()將被解僱。

Plunker這裏:http://plunker.co/edit/J4ZEB6ppvkiIvdW9J2VU?p=preview

+1

嘿耶穌,當我將它添加到我的代碼中時,它說'Uncaught ReferenceError:應用程序未定義'wtf? – pythonian29033

+0

ng-blur不能用於穩定版本,必須使用最新版本,不穩定版本 – pythonian29033

+1

'app'只是對我的模塊的引用。使用'angular.module('yourmodule')。directive ...'。 Angular 1.2帶有一個模糊指令,所以這是爲1.0.x或1.1.x –

4

角度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