ホームページ > ウェブフロントエンド > jsチュートリアル > AngularJS ビューで HTML フラグメントを安全にレンダリングするにはどうすればよいですか?

AngularJS ビューで HTML フラグメントを安全にレンダリングするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-20 14:31:17
オリジナル
527 人が閲覧しました

How to Safely Render HTML Fragments in AngularJS Views?

AngularJS コントローラーからビューへの HTML フラグメントの挿入

AngularJS では、コントローラーで HTML フラグメントを作成し、それらをビューにレンダリングすることができます。これは、リストやその他の複雑な UI 要素を動的に生成する場合に役立ちます。

これを実現するには、まず HTML フラグメントを保持するモデル プロパティを作成します。以下の例では、「customHtml」プロパティを作成します:

var SomeController = function () {
    this.customHtml = '<ul><li>render me please</li></ul>';
}
ログイン後にコピー

次に、ビューで ng-bind-html ディレクティブを使用して、customHtml プロパティを要素にバインドします:

<div ng-bind-html="customHtml"></div>
ログイン後にコピー

ただし、AngularJS は、HTML をサニタイズ目的では安全ではないものとして扱うため、HTML を引用符で囲まれた文字列としてレンダリングします。これを解決するには、$sce サービスを使用するか、ngSanitize モジュールを含めることができます。

$sce の使用

まず、$sce サービスをコントローラーに挿入します。

app.controller('SomeController', function($sce) {
    // ...
});
ログイン後にコピー

次に、$sce.trustAsHtml() メソッドを使用して、 HTML 文字列を安全な形式に変換します:

this.customHtml = $sce.trustAsHtml(someHtmlVar);
ログイン後にコピー

ngSanitize の使用

ngSanitize を使用するには、まず angular-sanitize.min.js スクリプトを含めます:

<script src="lib/angular/angular-sanitize.min.js"></script>
ログイン後にコピー

次に、ngSanitize を依存関係としてAngularJS モジュール:

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'ngSanitize'])
ログイン後にコピー

ngSanitize を使用すると、HTML 文字列をモデル プロパティに直接割り当てることができます:

this.customHtml = someHtmlVar;
ログイン後にコピー

どちらのメソッドでも、ビュー内で HTML フラグメントを動的に生成してレンダリングできます。により、AngularJS アプリケーションの柔軟性が向上します。

以上がAngularJS ビューで HTML フラグメントを安全にレンダリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート