0

、など@idの属性名を持つモデルがあります。@type

テンプレート(アンダースコア付き)で使用しようとする<%= @id %>と、Marionette.ItemView

Uncaught SyntaxError:予期しないトークンILLEGAL

構文を使用して['@id']も、期待した結果は得られません。

serializeData関数をオーバーライドする必要がありますか?

ありがとう

4

1 に答える 1

3

アンダースコアテンプレートは内部にJavaScript式を必要と<%= ... %>し、コンパイルされたテンプレートはを使用するwithため、通常、オブジェクトのプロパティを変数であるかのように参照できます。あなたの問題はそれ@idが有効なJavaScript式ではないということです。

そうです、sserializeDataを削除するためにあなた自身を提供すること@はおそらくあなたの最善の策です。別の可能性は、次のvariableオプションを使用すること_.templateです。

デフォルトでは、テンプレートwithはデータの値をステートメントを介してローカルスコープに配置します。ただし、変数設定で単一の変数名を指定できます。これにより、テンプレートのレンダリング速度を大幅に向上させることができます。

_.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'});
=> "Using 'with': no"

次に、次のようなものを使用できます<%= data['@id'] %>@問題は、このアプローチをMarionetteで機能させることは、カスタムserializeDataメソッドで単にsをクリーンアップするよりも多くの作業になる可能性があることです。

于 2012-10-27T02:49:47.893 に答える