2016-06-21 1 views
2

キーボードショートカットをバインドする角度指令を作成しました。しかし、これがバインドされると、他のすべてのdivのバインディングが保持されます。しかし、私は1つのdivにのみ添付しています。実行後にバインドを解除し、ユーザーがそのdiv内をクリックするとバインドを解除する方法 例:HTML内のコントローラで角度jsのキーボードショートカットイベントをアンバインドする方法

angular.module('Dummy').directive('keypressEvents', 
function ($document, $rootScope) { 
    return { 
    restrict: 'A', 
    link: function() { 
    $document.bind('keydown', function (e) { 
     if ((e.which == '115' || e.which == '83') && (e.ctrlKey || e.metaKey)){ 
     $rootScope.$broadcast('Ctrl+s'); 
     } 
    }); 
    } 
} }); 

$rootScope.$on('Ctrl+s', function (e) { 
    $scope.$apply(function() { 
     $scope.doDummyAction(); 
    }); 
    }); 

<div keypress-events>this is a div that binds keyboard shortcut</div> 
    <div>Another div which doesn't need a short cut key</div> 

は、任意の提案を高く評価しています。

答えて

0

$ documentは使用しないでください。リンク関数はスコープとそれに渡される要素を取得します。

link: function(scope, iElem){ 
    iElem.bind(... 
} 

ドキュメントにバインドすると、ドキュメント(ページ)をバブルアウトするイベントを待ち受けます。要素自体にバインドしただけでは、その要素にフォーカスがあってイベントが発生したときにイベントハンドラが起動されます。

+0

出来た。どうもありがとう。 – user2406718

関連する問題