2012-01-26 11 views
0

私は 'projects'フォームのJST - > EJSバックボーンテンプレートを持っています。理想的には、モデルの作成と編集の両方に同じテンプレートを使用したいと思います。現時点で バックボーン、JST、EJS:テンプレートの空白値

、私は、テンプレート内でこのような何かを持っている:

<input type='text' name='demo_field' value='<%= demo_field %>' /> 

限りdemo_fieldが値を持っていると正常に動作しますが、それがない場合は、フォーム全体がキャッチされないと失敗しますreferenceError。

変数フィールドがBackbone ...またはJST ...またはEJSで失敗するのではなく空白になることを保証する最もエレガントな方法は何ですか?

乾杯...

答えて

1

JavascriptをCoffeeScriptの中 field if field?のようなものをやって任意の良い方法を持っていないので、私はおそらく、ヘルパーを作ると思います。

スローヘルパー関数にこのような何か:

function printIfExists(field) { 
    return (typeof field !== "undefined" && field !== null) ? field : ''; 
} 

とあなたのテンプレートでそれを呼び出すを。やさしい!私はおそらく、前者の例の問題をスコープ...あまりにも長い間、私は理由を思い出すことができないのCoffeeScript使用してきた

var printIfExists = function(field){...} 

はまた別のfunction宣言を使用する場合があります。

+0

こんにちはwulftone - アイデアありがとう。残念ながら、フィールドをヘルパーに渡すことはできません。フィールドがヘルパーに渡されていない場合、フィールドをヘルパーに渡すときに、 'キャッチされていない参照エラー'がスローされます。例:printIfExists関数に達する前に、my_fieldが未定義の場合、<%= printIfExists(my_field)%>が参照エラーをスローします – PlankTon

+0

EJSに固執していない場合(私は他の場所でcoffescriptを使用しています) – wulftone

+0

正直なところ、自分のプロジェクトでは、バックボーン全体のオブジェクトをjstに渡すのが最も便利だとわかりました。しかし、私は自分のプロジェクトで自分のJAWSであなたのcoffeescriptを得ることができます。だから私は '@myModel.get 'myfield''で私のフィールドを呼び出し、そのフィールドが存在しなければバックボーンは単純に' null'を返します – wulftone

関連する問題