1

テンプレートのレンダリングに使用するシステムを構築しましたunderscore-jsが、IE 以外のすべてのブラウザーで正常に動作します。

テンプレートの一部を次に示します。

<td><input type="text"  id="${_id}_name" class="name" value="${name}" /></td>

IE8 では、提供されたオブジェクトに空の文字列があるtype=text場合、実際のテキスト フィールドに表示されます。name

もう少し掘り下げてみると、IE 8 のアンダースコア テンプレートは次のようになっていることがわかります。

<tr id="319"><TD><INPUT id=319_name class=name value= type=text></TD>

他のブラウザでのアンダースコアからの出力は次のとおりです。

<td><input type="text" id="310_name" class="name" value=""></td>

明らかに、属性値を引用符で囲んでいないことがこの問題を引き起こしています。

にも同じ問題があることに気付きましたjquery-tmpl

テンプレートの設定方法を示すコードの一部を次に示します。

template = _.template( tmpl );

$.each(data.data.stored, function(i, row) {                        
   $('table#user_data').append(template.template(row));

どのように/なぜこれが起こっているのでしょうか?

4

1 に答える 1

3

OK、解決策が見つかりました。ここで、jquery-tmpl の github で提起された問題を見つけました。

https://github.com/jquery/jquery-tmpl/issues/3

どうやら、IE が html をシリアライズする方法が原因で、回避策はタグにスペースを入れることです。そう:

${name} は ${ name } になります

于 2012-06-19T21:25:43.103 に答える