リンクフィルターを通過した HTML フラグメントに target="_blank" を追加したいと考えています。つまり、コンテンツが完全にレンダリングされた後、DOM を後処理する必要があります。
このjsFiddleを参照してください。
http://jsfiddle.net/ADukg/410/
ディレクティブの優先度に関する何かだと思いますが、それを変更しても今のところ役に立ちません。
リンクフィルターを通過した HTML フラグメントに target="_blank" を追加したいと考えています。つまり、コンテンツが完全にレンダリングされた後、DOM を後処理する必要があります。
このjsFiddleを参照してください。
http://jsfiddle.net/ADukg/410/
ディレクティブの優先度に関する何かだと思いますが、それを変更しても今のところ役に立ちません。
このような setTimeout でこれを行うことができます。時間が 0 の場合でも、Angular が処理を終了した後にのみ実行されます。
問題は、ディレクティブが評価された後に linky フィルターが 'a' タグを追加し、 element.find('a') が何も見つからないことです。
最善の解決策は、独自の URL フィルターを作成してから、リンキー フィルターを呼び出し、ディレクティブを使用しないことだと思います。
アップデート
そのためのjsfiddleも作成しました: http://jsfiddle.net/jomikr/ADukg/420/
angular-sanitize.js
writer.start('a', {href:url, target:'_blank'});
アラート - linky は target _blank をすべてのリンクに追加します。
コントローラーで関数を使用するだけではどうですか。
私はコントローラでこれを使用しています:
$scope.getTarget = function(isExternal) {
return isExternal ? '_blank' : '';
}
そしてhtmlで:
<div ng-repeat="slide in slides" data-slider-id="{{$index}}">
<a ng-hide="{{slide.link == ''}}"
href="{{slide.link}}"
target="{{getTarget(slide.isExternal)}}">
...