1

フロントエンドのテンプレート化にdustjsを使用しています。私は var userData = {'desc': 'This content should be shown inside HTML SPAN TAG'}; として json データを持っています。

ダスト テンプレート: {userData.desc}

しかし、このテンプレートをレンダリングしようとすると、desc コンテンツは「同じ文字列として」ページに表示され、タグは HTML スパンとして表示されません。

{userData.desc|s|h} を使用する場合: スパンは <span> としてページに表示されます

私が使用できる唯一の方法は {userData.desc|s} です。これはスパンをhtmlタグとして適切に表示します。ただし、|s はスクリプト タグもエスケープ解除するため、リスクがあります。

JSON データ コンテンツから HTML タグのみをエスケープ解除したいのですが、dustjs でこの要件を達成する方法はありますか?

4

2 に答える 2

0

自動エスケープを無効にするために利用できる唯一のダスト フィルターは です|s。これは、前述のように、スクリプト タグがデータに含まれる可能性がある場合は安全ではありません。ダストgithubページによると:

フィルターは引数を受け入れません。より洗練された動作が必要な場合は、代わりにセクション タグを使用してください。

ドキュメントでは、セクション タグを使用してより洗練されたフィルター動作を作成する方法が明確にされていませんが、最も可能性の高い解決策は、@ヘルパーを作成することだと思います。

そうは言っても、ほとんどのユースケースでは組み込みフィルターで十分だと思います。スクリプト タグが に入る可能性がある場合はuserData.desc、自動エスケープを無効にしないでください。テンプレートを使用している場合は、マークアップをテンプレート (JSON ではなく) で作成する必要があります。

于 2012-08-22T17:07:02.720 に答える
0

カスタム フィルターを作成できます。これは、ヘルパーよりもニーズに適しています。必要なことを行う独自のカスタム コードを使用して、dust.filter を拡張するだけです。

ここで私の回答を参照してください: Dust.js でカスタム レンダリング ロジックを実装するにはどうすればよいですか?

于 2012-08-27T02:43:21.807 に答える