7

翡翠/アンダースコアでバックボーンを使用するテンプレートについて少し混乱しています。

いくつかの配列を含むバックボーンモデルがあり、配列属性をレンダリングする方法がわかりません。それらを別のバックボーンコレクションとビューに移動することもできますが、この場合はやり過ぎのようです。

翡翠でのバックボーンの使用に関するこのブログ投稿に従い、バックボーンファイルに以下を追加しました

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

これにより、このマナーでモデル属性をレンダリングできます。

      //in my JavaScript
      this.template = _.template($("#some-template").html());

      //in my .jade template
      input.text(type='text', name="name", value='{{name}}')

私が解決したいのは、モデル内の配列の1つに対して単純なループを実行する方法です。例えば

    - for (var child in children)
        {{child}}

しかし、翡翠が始まり、アンダースコアが引き継ぐ正しい構文についてはかなり混乱しています。ありがとうございます。

4

1 に答える 1

5

ブラウザでjadeを使用することはできません(おそらく技術的には使用できますが、アンダースコアではなくバックボーンで使用することはそれほど一般的ではありません)。そこでアンダースコアテンプレートを使用します。 _.templateのドキュメントには、javascriptを評価し、_。eachメソッドを使用してモデルの配列属性をループできることが示されています。

renderビューの関数内では、このようになります。効率を上げるために、ビューの属性としてテンプレート関数をキャッシュする必要がありますが、簡単にするためにここにインラインで配置します。たとえば、ドライバ名の配列としてのCarリストを持つモデルがあるとします。drivers

var template = "<% _.each(model.drivers, function(name) { %> <li><%= name %></li> <% }); %>";
return _.template(template, this);

この例には、テンプレートマークアップの補間スタイル( )と評価スタイル( )のevaluate両方が含まれているため、テンプレート設定で構文を指定する必要があることに注意してください。現在、口ひげスタイルの補間があり、それだけでは不十分です。<%=<%

于 2011-07-30T15:27:46.777 に答える