2011-12-24 18 views
5

Tôi đang thử jsRender.jsrender nếu người khác sử dụng {{= propName}}

Những gì tôi muốn làm:

JS mẫu:

<script id="theaterTemplate" type="text/x-jquery-tmpl"> 
    {{* 
     if ("{{=theaterId}}" == getCurrentTheaterId()) { 
    }} 
     <a class="active" href="#"> 
    {{* 
     } else { 
    }}   
     <a href="#">   
    {{* } }} 
     {{=theaterName}} 
    </a> 
</script> 

Trong JS khác:

function getCurrentTheaterId() { 
    return "523"; 
} 

Về cơ bản, trong mẫu, nếu id nhà hát hiện tại lặp phù hợp với những gì được trả về từ hàm js, sau đó đặt lớp thành hoạt động. "{{= TheaterId}}" ngắt trong điều kiện if. Tôi đoán bạn không được phép truy cập các thuộc tính json hiện tại trong điều kiện if.

Bất kỳ ý tưởng nào về cách thực hiện việc này?

Hy vọng điều đó có ý nghĩa. Cảm ơn!

Trả lời

6

Trong chương trình mẫu của họ, họ có điều này:

$.views.allowCode = true;/ 

http://borismoore.github.com/jsrender/demos/step-by-step/11_allow-code.html

[Chỉnh sửa]

Bạn phải nói 'jsRender về chức năng bên ngoài. Dưới đây là một ví dụ làm việc:

<script type="text/javascript"> 
     function IsSpecialYear() 
     { 
      return '1998'; 
     } 

     // tell jsRender about our function 
     $.views.registerHelpers({ HlpIsSpecialYear: IsSpecialYear }); 

    </script> 

    <script id="movieTemplate" type= "text/html"> 

     {{#if ReleaseYear == $ctx.HlpIsSpecialYear() }} 
      <div style="background-color:Blue;"> 
     {{else}} 
      <div> 
     {{/if}} 
      {{=$itemNumber}}: <b>{{=Name}}</b> ({{=ReleaseYear}}) 
     </div> 

    </script> 

    <div id="movieList"></div> 

<script type="text/javascript"> 

    var movies = [ 
     { Name: "The Red Violin", ReleaseYear: "1998" }, 
     { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
     { Name: "The Inheritance", ReleaseYear: "1976" } 
    ]; 

    $.views.allowCode = true; 

    $("#movieList").html(
     $("#movieTemplate").render(movies) 
    ); 

</script> 

[EDIT 2] Một phức tạp hơn boolean điều kiện:

function IsSpecialYear(Year, Index) 
    { 
     if ((Year == '1998') && (Index == 1)) 
      return true; 
     else 
      return false; 
    } 

    // tell jsRender about our function 
    $.views.registerHelpers({ HlpIsSpecialYear: IsSpecialYear }); 

</script> 

<script id="movieTemplate" type= "text/html"> 

{{#if $ctx.HlpIsSpecialYear(ReleaseYear, $itemNumber) }} 
    <div style="background-color:Blue;"> 
{{else}} 
    <div> 
{{/if}} 
+0

Rất tiếc, tôi đã đề cập rằng tôi đã có. –

+0

Tôi đã chỉnh sửa bài đăng gốc của mình bằng mã mẫu. –

+0

Cảm ơn Steve. Từ mô tả của tôi, {{= theaterId}} trong điều kiện if là phần phá vỡ, không phải là phần chức năng. Cảm ơn tho. –

2

& & đã không được hỗ trợ cho đến khi một ứng cử viên beta gần đây đã trở thành có sẵn. Số lượng logic bạn có thể thực hiện theo cách khai báo trong mẫu bị giới hạn và không bao gồm & & hoặc ||. Tuy nhiên, sự hỗ trợ cho các nhà khai thác so sánh hiện đã hoàn tất. Có một số ví dụ ở đây: http://borismoore.github.com/jsrender/demos/step-by-step/10_comparison-tests.html

+0

FYI: Boris Moore là tác giả của jsRender và jsViews! –

Các vấn đề liên quan