5

非常に基本的な問題がありますが、解決策がわかりません。多分私は自分の考え方を変える必要があります。true基本的に、JSONファイルでモデルを取得していますが、に変換する方法がわかりませんchecked。たとえば、私はがまたはの{{-done}}いずれかtrueであることを知っていますfalse

input type="checkbox"  id="chkName"   <%= {{-done}} ? "checked" : "" %>

このような例がたくさんありますが、うまくいきません。それは私が真/偽の値を取り戻した方法のためですか。

どんな助けでもいただければ幸いです

4

2 に答える 2

13

問題は、間違ったタイプのUnderscore.jsテンプレートタグを使用していることです。使用しているタグは、値を補間してHTMLエスケープするためのものです。

説明すると、アンダースコアテンプレートには3種類のタグがあります。

  1. <%= %>-補間-プロパティのデータを評価して出力します。
  2. <%- %> エスケープデータを評価し、HTMLエスケープして印刷します。
  3. <% %> 評価テンプレートでJavaScriptを実行できます。

さらに、テンプレート内でJavaScriptを実行する場合、Printメソッドを使用してテキスト(属性の結果など)を出力できます。

上記に基づいて、テンプレート内で条件を実行して、doneがtrueと評価されたかどうかをチェックして印刷する必要があります。したがって、あなたができることは次のようなものです

<% if(done) { %> 'checked="checked" <% } %>

printまたは、この方法を使用できます

<% print(done ? 'checked="checked"' : '') %>

編集:

投稿したテンプレートに基づいて、次のテンプレートが機能するはずです

     <script id="item-template"  type="text/template">   
         <input type="checkbox" id="toggle" <% print( done ?  'checked="checked"' : '') %> /> 
           <span class="text">{{-done}}</span>
           <a id="dele" data-role="button" data-inline="true" data-icon='delete' >Delete</a>
        </script>

これは、デフォルトのERBスタイルの区切り文字を使用したjsBinへのリンクです。

そして、これが口ひげスタイルの区切り文字を使用した2番目のものです。

于 2012-10-22T22:12:51.230 に答える
0

私はそれを持っていると思ったが、それは単に常に最初の状態に入る。これは私が持っているものです。ご覧のとおり、次の行にDoneを印刷していますが、これはtrueまたはfalseを示しています。あなたのコードは理にかなっています、ただボールをプレイしたくないだけです。スクリプト宣言によるものでしょうか?

        <div id="items">     
        <script id="item-template"  type="text/template">   
             <input type="checkbox" id="toggle" <% print( done ?  '' : checked) %> 
               <span class="text">{{-done}}</span>
               <a id="dele" data-role="button" data-inline="true" data-icon='delete' >Delete</a>

            </script>
        </div> 
于 2012-10-23T19:10:18.803 に答える