1

リンクフィルターを通過した HTML フラグメントに target="_blank" を追加したいと考えています。つまり、コンテンツが完全にレンダリングされた、DOM を後処理する必要があります。

このjsFiddleを参照してください。

http://jsfiddle.net/ADukg/410/

ディレクティブの優先度に関する何かだと思いますが、それを変更しても今のところ役に立ちません。

4

5 に答える 5

4

このような setTimeout でこれを行うことができます。時間が 0 の場合でも、Angular が処理を終了した後にのみ実行されます。

于 2012-07-30T18:00:04.360 に答える
3

問題は、ディレクティブが評価された後に linky フィルターが 'a' タグを追加し、 element.find('a') が何も見つからないことです。

最善の解決策は、独自の URL フィルターを作成してから、リンキー フィルターを呼び出し、ディレクティブを使用しないことだと思います。

アップデート

そのためのjsfiddleも作成しました: http://jsfiddle.net/jomikr/ADukg/420/

于 2012-07-31T10:22:36.693 に答える
1
  1. ファイルを開くangular-sanitize.js
  2. 525行目に行く
  3. に変更しますwriter.start('a', {href:url, target:'_blank'});

アラート - linky は target _blank をすべてのリンクに追加します。

于 2013-05-07T08:21:07.917 に答える
0

コントローラーで関数を使用するだけではどうですか。

私はコントローラでこれを使用しています:

$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)}}">
...
于 2013-07-15T07:49:00.790 に答える