javascript
  • radio-button
  • ejs
  • 2012-02-03 5 views 3 likes 
    3

    私は助けが必要です 私はEJSのjavasriptテンプレートを使ってコードスニペットを書いています。サーバーから返されたデータに応じてラジオボタンを2つ選択します。サーバは(my_dataという名前の)JSONを返し、ここに私のコードEJSのテキストをエコーし​​てラジオボタンを確認する方法

    <input type="radio" name="is_public" value=1 <% if(my_data.is_public){ %> <%='checked' %> <% } %> />Public 
    <input type="radio" name="is_public" value=0 <% if(!my_data.is_public){ %> <%='checked' %> <% } %> />Private 
    

    である。しかし、それは仕事をdoesnt言ってみましょう! publicは常にチェックされますが、my_data.is_public = 0となります。

    いずれかが役に立ちますか? EJS使用されることはありません

    <input type="radio" name="is_public" value=1 <% if(my_data.is_public){ echo 'checked' } %> />Public 
    

    答えて

    4

    が、他のテンプレートエンジンからの経験から、これは動作するはずです::

    <input type="radio" name="is_public" value=1 <% if(my_data.is_public){ %> checked="checked" <% } %> />Public 
    <input type="radio" name="is_public" value=0 <% if(!my_data.is_public){ %> checked="checked" <% } %> />Private 
    
    ところで

    、「エコー」EJSで、このようなテキストをする方法はあります

    <%=と言うと、後に続くJavaScript評価の結果を出力することになります。例えば。 <%= a %>は、その時点で変数aの内容を出力する必要があります。

    テンプレート内の明示的なエコーの必要はありません - <% %>外のものはもちろん、デフォルトで反響しなければならないいくつかのブロックが条件付きで上記ifのように、エコーされる、またはループを使用するときに掛けすることができることを考えると、など

    +0

    は、私はそれを解決した。 Javascriptは1を真、0を偽と認識していないようです。 if(my_data.is_public == 1)if(my_data.is_public)if(my_data.is_public)if(my_data.is_public == 0)if(if my_data.is_public)の代わりに、それは動作します。D とにかくあなたの助言に感謝します。 <%= %>を削除したときに私のコードがよりきれいになりました:D –

    +0

    助けてくれてありがとうございました! Javascript自体がこれを行います - このjsfiddle:http://jsfiddle.net/CdPbp/を参照してください。これはEJS固有の可能性があります。とにかく、あなたが見つけたものはうまくいくはずです。 –

    +0

    @LeoLerdorf、これはほとんどすべての言語で動作します。実際の "ブール値"のfalseは、実際には0、null、nil、{}、[]、または空の(JSの)任意のものです。これを試してください: 'console.log(10 * false);'と 'console.log(10 * true);'あなたはそれを理解するでしょう;) –

    関連する問題