0

Haml テンプレートでアンダースコア テンプレート変数を出力しようとしていますが、うまくいきません。

HTML がエスケープされていないため、アンダースコア変数がレンダリングされない理由がわかりません。

HAML - 完全なテンプレート

%script{:type => "text/template", :id => "user_list_template"}
  %h4 Users
  #test
  %table.table.table-bordered
    %thead
      %tr
        %th #
        %th Name
        %th Nickname
        %th
          %tbody
          {{ _.each( users, function(user) { }}
            %tr
              %td {{= user.get('id') }}
              %td {{= user.get('name') }}
              %td {{= user.get('nickname') }}
              %td 
                %a.btn{:href => "{{= user.get('nickname') }}"}
                  View User
          {{ }); }}

起源

<tr>
  <td>9</td>
  <td>TacoHell</td>
  <td>TacoHelll</td>
  <td>
    <a class="btn" href="<%= user.get('nickname') %>">
      View User
    </a>
  </td>
</tr>

テンプレートの Console.log

<h4>Users</h4>
<div id='test'></div>
<table class='table table-bordered'>
  <thead>
    <tr>
      <th>#</th>
      <th>Name</th>
      <th>Nickname</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
  {{ _.each( users, function(user) { }}
    <tr>
      <td>{{= user.get('id') }}</td>
      <td>{{= user.get('name') }}</td>
      <td>{{= user.get('nickname') }}</td>
      <td>
        <a class='btn' href="{{= user.get('nickname') }}">
          View User
        </a>
      </td>
    </tr>
  {{ }); }}
  </tbody>
</table>

以前の質問を読みましたが、機能しません。何か案は?

編集 1 完全なテンプレートを追加

テンプレートの 2 console.log を編集

4

1 に答える 1

0

これは回避策であるため解決策ではありませんが、代わりの 1 つは、アンダースコア テンプレートに別の構文 ( <andを含まないもの>) を使用することです。あなたが見れば:

http://documentcloud.github.com/underscore/#template

Django/Mustache スタイルの代替テンプレート構文の例が提供されていることがわかります。

ERB スタイルの区切り記号が気に入らない場合は、Underscore のテンプレート設定を変更して、別の記号を使用して補間コードを引き立たせることができます。そのまま補間する必要がある式に一致する補間正規表現、HTML エスケープ後に挿入する必要がある式に一致するエスケープ正規表現、および結果の文字列に挿入せずに評価する必要がある式に一致する評価正規表現を定義します。3 つの任意の組み合わせを定義または省略できます。たとえば、Mustache.js スタイルのテンプレートを実行するには、次のようにします。

_.templateSettings = {
  interpolate : /\{\{(.+?)\}\}/g
};

var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"

もちろん、いずれにせよより強力なテンプレート システムを検討しているのであれば、_.templateMustache、Handlebars、または同様のテンプレート システムを放棄して使用しても問題はありません。ただし、アンダースコアに満足している場合は、または_.templateSettings.interpolateなしで使用できます。<>

于 2013-01-17T21:35:52.537 に答える