0

私のモデルには、ブラケット表記を使用して参照する必要がある (Web サービスから受け取った) 特殊文字を含むプロパティがあります。でテンプレートをレンダリングするときにこれらのプロパティを参照する方法はありthis.model.toJSON()ますか? 現在、それらをマッピングするために toJSON をオーバーライドしています。

Update、おそらくこれまでで最高/最も簡単な別の方法:$(this.el).html(this.template({ data: this.model.toJSON() }));でプロパティを参照しますdata['@invalid-property-#characters']

更新、テンプレートの例:

<span><%= section_name %></span>
<span><%= @type %></span <!-- won't work -->
<span><%= data['@type'] %></span> <!-- works -->
4

2 に答える 2

0
  1. モデルをオーバーライドtoJSONし、プロパティを特殊文字で別の方法でマップします。
  2. 角かっこ構文を使用するには、変数のスコープを設定します。this.template({ scopedVariable: this.model.toJSON() })とテンプレートで<%= scopedVariable['@invalid-variable-#name'] %>
于 2012-11-30T12:11:27.313 に答える
-1
@type

は有効な JavaScript 変数名ではないため、機能しません。

編集 :

プロパティ名を変更するか、質問で行ったようにオブジェクトを渡してモデルを変数にスコープする以外に解決策はありません。これは単なる JavaScript の魔法ではありません。JavaScript で機能しない場合は、アンダースコア テンプレートでは機能しません

于 2012-11-29T15:56:34.743 に答える