5

私のプロジェクトの JQuery テンプレートで、HTML をエンコードせずに HTML 文字列である変数を書き出そうとしています。次のように変数を出力すると:

 ${description}

その結果、生の HTML 文字列がタグ付きで出力され、次のようになります。

<p>text <b>bold</b>  <i>italic</i></p>

しかし、コード内のまったく同じ場所でマークアップを実際のタグに変換しようとすると、次のようになります。

   {{html $description}}

何も出力しません!

変数を渡す方法を無数に試しましたが、取得できない html ルーチンで何かが起こっていると思います。

ありがとう。

アップデート:

それがどのように呼び出されているかは次のとおりです。

    this.$el.attr('data-id', tmplData.id).
          data('id', tmplData.id).html($.tmpl(this.template, tmplData));

this.template はテンプレート ファイルで、tmplData は $description とその他の必要な変数を含む JSON です。

別の更新:

 {{html '<p>string</p>'}}

期待どおりに動作します。しかし

 {{html $another_variable}}

$another_variable に HTML が含まれていない場合でも、出力を生成できません。

別の更新:

私も試しました:

 ${$item.html(description)}

テンプレートへの呼び出しを次のように変更しました

 this.$el.attr('data-id', tmplData.id).
         data('id', tmplData.id).
         html($.tmpl(this.template, tmplData, {
            truncate: _.truncateStrip,
            html: _.html,
        }));

そして、推奨されたように、文字列を変更せずに通過させるカスタム html ルーチンを作成しました。

 html: function(str) {
        return str;
    }

しかし、まだサイコロはありません。

4

2 に答える 2

15

答えは次のとおりです。

{{html description}}

早い段階で試したのですが、中かっこの中にスペースを空けてしまったため、正しく解釈されませんでした。

:-(

于 2013-02-07T02:13:19.803 に答える
0

ソースを開くと、エンコードを行う行を変更できます。オフにするオプションが表示されなかったので、これが最も簡単な解決策かもしれません。

変化する:

encode: function( text ) {
            // Do HTML encoding replacing < > & and ' and " by corresponding entities.
            return ("" + text).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;");
        }

encode: function( text ) {
            // Do HTML encoding replacing < > & and ' and " by corresponding entities.
            return text;        
}
于 2013-02-07T01:26:07.873 に答える