2017-02-10 88 views
1

我有這樣的指令,攔截鏈接點擊:離子:單擊事件不會攔截

var app = angular.module('mobApp.services'); 
app.directive('a', function() { 
    return { 
     restrict: 'E', // only Elements (<a>), 
     link: function(scope, elm, attr) { 
      elm.on('click', function($event) { 
       $event.preventDefault() 
       var href = attr.href; 
       if(!!href && href !== '#') { 
        window.open(href, '_system', 'location=yes'); 
       } 
       return false 
      }) 
     } 
    } 
}) 

我有這個元素

<p ng-bind-html="post.details | linky:'_blank'" class="ng-binding"> 
    <a target="_blank" href="https://davidwalsh.name/speech-recognition" class=""> 
     https://davidwalsh.name/speech-recognition 
    </a> 
</p> 
上點擊 a

不點火上面的指令代碼。

回答

1

它不工作,因爲你通過ng-bind-html渲染HTML標記尚未爲了編譯通過角到指令可以工作。所以如果你想動態地向文檔添加指令,你必須compile它。這是你如何做到這一點的answer

+0

我該如何使用'ng-bind-html'編譯指令? – manish

+0

你不能。創建一個包裝指令/組件或控制器,其中您將通過'html()'或'append()'方法編譯並追加編譯後的html到現有DOM節點中。 – GProst

+0

你可以舉例說明如何做到這一點 – manish