5

jQueryテンプレートについて詳しく調べようとしていますが、テンプレート内でJS呼び出しを実行できないようです。

<script id="log-item" type="text/x-jquery-tmpl">
 {{if title.length }}
   <h3 style="padding-bottom:5px;">${ title }</h3>
 {{/if}}
 objectToString(${ detail });
</script>

私のobjectToString()関数は呼び出されず、文字列としてレンダリングされるだけであることに注意してください。気まぐれで{{}}で包んでみましたが、運が悪かったです。助けてくれる人はいますか?

4

2 に答える 2

8

アンソニー、できます。呼び出すメソッドは、次のようなテンプレートタグ内にある必要があります。

<script id="log-item" type="text/x-jquery-tmpl">
 {{if title.length }}
   <h3 style="padding-bottom:5px;">${ title }</h3>
 {{/if}}
 <p>
    Detail: ${ objectToString( detail ) }
 </p>
</script>
于 2011-01-19T16:38:19.227 に答える
2

objectToStringがどこにあるかはわかりませんが、ここに参照が表示されている場合は、必要なヘルパー関数が.tmpl(メソッド)に追加されていることがわかります。

ここに例があります...私はあなたが質問で持っているものにそれを似せようとしました...

<!DOCTYPE html> 
<html> 
<head> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
  <title>Test jquery Templates</title> 
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script> 
  <script type='text/javascript' src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script> 
</head> 
<body> 
  <script id="testTemplate" type="text/x-jquery-tmpl"> 
    {{if title.length}}
      <h3>${title}</h3>
      <p>Detail: ${$item.objectToString("detail")}</p>
    {{/if}}
  </script>  
  <div id="bookList"></div> 
  <script type='text/javascript'> 
    $(function(){
      var book = [
        { title: "Goodnight, World!",
          detail: { author: "Jojo Mojo", synopsis : "What the ..." }},
        { title: "Rainbow",
          detail: { author: "Cookie", synopsis : "Huh?" }}
      ];

      $("#testTemplate").tmpl(book, {
        objectToString : function(key) {
          var detail = this.data[key];
          return detail.author +  " " + detail.synopsis;
        }
      }).appendTo("#bookList");
  });
  </script> 
</body> 
</html> 

ここで見ることができます。

于 2011-01-19T08:25:58.847 に答える