2016-08-26 7 views
0

新しいタブでモーダルのリンクをすべて開こうとしていますが、角度を使用するという制約のためにDOMを操作するのは簡単ではありません私はそれがあると思っていた。クリックイベントをリンクにバインドして、そのクリックイベントを新しいタブで開く方法はありますか?新しいタブでリンクを開くためにイベントをバインドする

私が持っているこの

w = angular.element($window) 
w.bind 'click', (e) -> 
    # if link clicked open link in new tab?  
+0

を、私はそれはそれを実現することができ、角度ものではありませんだと思います。この問題を解決するには、ユーザーの 'HTML'プロパティを使用できます。デフォルトでは、アンカータグに 'target =" _ blank "'を使用してください。すべてのタグが新しいタブで開きます。 – Vineet

答えて

0

基本的なルールのようなものは、あなたがDOMで何かをしようとしているならば、あなたはディレクティブを持っており、リンク機能で、通常のjQueryのを使用する必要があるということです

new-tab.directive.coffee

angular.module 'my.module' 
    .directive 'newTab', ($window) -> 
    restrict: 'A' 
    link: (scope, element, attributes) -> 
     element.on('click', (evt)-> 
     # Open link in new tab here 
    ) 

使用例:

<a href='/your/link' new-tab> 

リンクがまだ現行のウィンドウの同じページに移動しないように、「デフォルトを回避する」必要があります。

任意のすべてのノードで_target = 'blank'プロパティを設定するだけでも問題ありません。

私はあなただけですべてのリンクをngのクリックを使用することはできません。この

new-tab-a.directive.coffee

angular.module 'my.module' 
    .directive 'a', -> #I doubt this is a good idea though using 'a' as a directive name. 
    restrict: 'E' 
    link: (scope, element, attributes) -> 
     attributes.target = '_blank' 
1

をテストしていませんか?

<a href="#" ng-click="openLink('http://www.google.com')">Open link in new window</a> 

そして、あなたのコントローラ内でこのような何かを持っている:

$scope.openLink = (link) -> 
    window.open link 
    return 

それとも、htmlの使用:

<a href="http://www.google.com" target="_blank">Open link in new window</a> 
+0

同じことを書いているだけです。なぜ車を再発明するのですか? – Luxor001

+0

そのため、すべてのコントローラがこのメソッドを持つか、スコープ継承を使用してそれを提供する必要があり、通常はディレクティブが必要であることを示すコントローラにDOMを関連付けます。私はシンプルなターゲット= '_空白'が好きで、シンプルで機能します! –

関連する問題