0

スコープに文字列があり、HTML をエスケープする必要があるかどうかが常にわかりません。基本的に、HTML をエスケープする必要があるかどうかを示すブール値があります。

コード

これが私のコード例の一部です:

$scope.result = "<b>foo</b>bar";
$scope.html = false; // In this case the HTML *would* be escaped

HTML が次のように挿入される場合を次に示しますinnerHTML

$scope.result = "<strike>foo</strike>bar";
$scope.html = true; // The HTML would be escaped

私が試した他の解決策

これを行うための「Angular Way」が何であるかは.removeAttributeわかりませ..

4

2 に答える 2

1

例は次のようになりました。

<p ng-bind-html-unsafe="data.markupData"></p>

ng-repeat を使用した反復も簡単でした。

<div ng-repeat="item in items">
  <p ng-bind-html-unsafe="item.markupData"></p>
</div>

1. 新しいコントローラーを作成する

var ExampleCtrl = function($scope) {
}

そしてあなたのHTMLで:

<div ng-repeat="example in Examples" ng-controller="ExampleCtrl">
  <p ng-bind-html="trustedExample"></p>

<hr />

</div>

2.Strict Contextual Escaping サービスをコントローラーに追加します。

var ExampleCtrl = function($scope, $sce) {

}

3. データに対して $sce.trustAsHtml 関数を使用する

var ExampleCtrl = function($scope, $sce) {
  $scope.trustedExample = $sce.trustAsHtml($scope.example);
}

これが役立つことを願っています

于 2016-01-02T04:48:57.883 に答える
0

これを行う「角度のある」方法の 1 つfilterは、html とブール値を受け取り、エスケープされた/エスケープされていない html を返す a を記述することです。

dngular フィルターの作成方法に関する基本的なチュートリアルは次のとおりです: https://docs.angularjs.org/tutorial/step_09

html をエクスケープする方法については、 https$sanitize : //docs.angularjs.org/api/ngSanitize/service/ $sanitizeを使用してみてください。

于 2016-01-02T04:35:00.073 に答える