2013-07-31 11 views
13

anglejsを使用してそのコンポーネントの外側をクリックすると、開いているコンポーネントを閉じる必要があります。ぼかしイベントのための角度指示はありますか?そうでない場合は、どうすればいいですか?ネイティブ角度のJsでサポートされていないAngularJSのjQueryのぼかしイベントの置き換えは何ですか?

+0

最初の回答は間違いありませんが、これはjquryイベントではないことに注意したいと思います。これはjavascriptイベントです。あなたが本当に良いクライアントサイドプログラミングをしたいのであれば、jqueryがフードの下で何をするのか調べてみてください。 – bigblind

答えて

7

あなたはダブルクリックイベントぼかし、フォーカスを、提供http://angular-ui.github.io/ui-utils/ @角度UIを使用するか、いずれかのイベントにコールバックをバインドすることができます

以下

はblurイベントの例の一つである:フォーカスとブラーのイベントをサポートする

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

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

私のアプリでそれを使用していますが、ui-eventはモデル値変更の前に火です。関数内で関数テスト(ng-model)を呼び出しています。関数内では古い値を表示しますが、最初は未定義です –

0

ディレクティブは、次のAngularJSに含まれます(私の推測では、来月内にある)すぐにあるべき、(reference)をリリース。待つことができない場合は、JQueryGuruの提案のように、AngularUIプロジェクトのuiEventディレクティブを使用できます。

25

angle-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イベントをバインドすることですん何か(我々は入力を残して)発射され、指示に何が適用されます。したがって、我々の場合、入力を離れるとdoFoo()が解雇されます。

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

+1

Hey Jesus、これをコードに追加すると、 'Uncaught ReferenceError:アプリは定義されていない 'wtf? – pythonian29033

+0

ng-blurは安定版では動作しません。最新の不安定版を使用する必要があります。 – pythonian29033

+1

'app'は私のモジュールへの参照です。 'angular.module( 'yourmodule')。ディレクティブ...'を使用してください。角1.2にはぼかし指令が付いていますので、これは1.0.xまたは1.1.x用です –

1

ネイティブNG-ボケ「最新不安定で全く動作しません:(」 http://docs.angularjs.org/api/ng.directive:ngBlur

ヨは、この記事の手順に従って、この問題を解決することができ 「ありAngularJsでblurイベントには直接サポートされていない。しかし、我々はディレクティブを作成することにより、blurイベントのサポートを追加することができます。」 http://coding-issues.blogspot.in/2013/10/angularjs-blur-directive.html

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; 
} 

※角度バージョンng-blurが導入されました。