2012-02-10 5 views
0

私はjTemplatesをしばらく使っていて、jQuery + jTemplates + Web Servicesで完全にサイトを構築しようとしています。私がこのような状況に遭遇するまで、サーバーのコントロールを追加する必要があるか、またはコードブロックを使用してコードブロックの一部のデータを解決する必要がある場所まで、テンプレートのレンダリングの最中に<%= DoSomething(param)%> 。jTemplates内のサーバーコードブロック?可能?

の下jTemplatesのストリップダウンバージョンを考えてみましょう。今、私は...このように簡単として何かを達成することができないため、壁に頭を叩いてる

<script type="text/html" id="ContentTemplates"> 
    {#template MAIN} 
     {#foreach $T.Products as product} 
      <div id="div-product-{$T.product.Id}" class="product-wrapper"> 
       {#include Content root=$T.product} 
      </div> 
     {#/for} 
    {#/template MAIN} 

    {#template Content} 
     <div class="view-container"> 
      <p>Id: {$T.Id}</p> 
      <p>Desc: {$T.Desc}</p> 
      <p>Vendor Id: {$T.VendorId}</p> 

      <!-- Vendor name doesn't supplied by the web service, 
        it needs to be resolved using ASP.NET server code --> 
      <p>Vendor Name: <%= GetVendorName({$T.VendorId}) %></p> 
      <!-- i was hoping to do something like this, 
        but apparently it wouldn't work this way --> 
     </div> 
    {#/template Content} 
</script> 

は、それは私が見逃しているものですか?それとも、jTemplatesを本当に単純なHTMLレイアウトをレンダリングするために使うべきなのでしょうか?テンプレートエンジンはサーバーコードブロックを解決できますか?それとも、私は単に休止していますか?

答えて

0

これは私がになってしまったものです:

<p>Vendor Name: <span class="vendor-name" vid="{$T.VendorId}"></span></p> 

代わりに(できません)レンダリングプロセスの真っ只中にサーバーコードを実行しようとしているの、私が使用し、その後、プレースホルダ<span>上のIDをレンダリング後で値を注入するjQuery。

// After template is rendered 
$.each($(".vendor-name"), function(){ 
    $this = $(this); 
    var vid = $this.attr("vid"); 
    $this.append("<%= GetVendorName(" + vid + ") %>") 
}); 

ハックが、少なくともそれが動作します。)

関連する問題