2011-12-24 56 views
5

我在試用jsRender。jsrender if-else using {{= propName}}

我想要做什麼:

JS模板:

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

在其他JS:

function getCurrentTheaterId() { 
    return "523"; 
} 

基本上,在模板中,如果在迭代當前影院ID匹配什麼從js函數返回,然後將該類設置爲活動狀態。 if條件中的「{{= theaterId}}」中斷。我想你不能在if條件中訪問當前的json屬性。

有關如何做到這一點的任何想法?

希望這是有道理的。謝謝!

回答

6

在他們的樣本程序他們有這樣的:

$.views.allowCode = true;/ 

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

[編輯]

你要 '告訴' jsRender有關外部功能。這裏有一個工作示例:

<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> 

[編輯2]更復雜的布爾條件:

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

對不起,我應該提到我已經有了。 – 2011-12-24 13:07:43

+0

我使用示例代碼編輯了我的原始帖子。 – 2011-12-24 16:29:05

+0

謝謝史蒂夫。從我的描述來看,if條件中的{{= theaterId}}是中斷的部分,而不是函數部分。感謝壽。 – 2011-12-24 17:51:58