2

アンギュラーの新機能。linky フィルターを使用して、既にサニタイズされたテキストに、改行を含む href リンクを追加しています。

http://docs-angularjs-org-dev.appspot.com/api/ngSanitize.filter:linky angularjs 改行フィルター (他の html なし)

<section class="description"
       ng-bind-html-unsafe="piano.description | noHTML | newlines | linky ">
</section>

ただし、linky は html を自動的にサニタイズし、慎重に追加した改行を削除します。これを行うための受け入れられた方法はないようです。何がうまくいきますか? 改行をエスケープ解除するフィルターを作成しますか? リンクをカスタマイズしてフィルターなしオプションを追加しますか?

4

3 に答える 3

1

私は今日、このまったく同じ問題に遭遇しました-Angularの内部リンクフィルターをここからparseUrlFilterに置き換えることで最終的に解決しました: https://stackoverflow.com/a/14693341/2199358

于 2013-12-05T13:27:37.837 に答える
0

同様の状況で次のディレクティブを作成することになりました。次の 2 つのことを行います。

  1. HTMLサニタイズなし
  2. マークアップは現在のスコープでコンパイルされます。

使用法:

<tr ng-repeat="row in newItemHTMLs" replace-with-html="row"></tr>

ソース:

myApp.directive('replaceWithHtml', ['$parse', '$compile', function($parse, $compile) {
    return {
      restrict: 'A',
      compile: function(tElement, tAttrs) {
        var ngBindHtmlGetter, ngBindHtmlWatch;

        ngBindHtmlGetter = $parse(tAttrs.replaceWithHtml);
        ngBindHtmlWatch = $parse(tAttrs.replaceWithHtml, function(value) {
          return (value || '').toString();
        });
        $compile.$$addBindingClass(tElement);

        return function(scope, element, attr) {

          $compile.$$addBindingInfo(element, attr.replaceWithHtml);

          return scope.$watch(ngBindHtmlWatch, function() {
            return element.replaceWith($compile(ngBindHtmlGetter(scope))(scope) || '');
          });

        };

      }
    };
  }
]);
于 2016-06-07T23:21:04.750 に答える