2011-12-24 15 views
5

का उपयोग कर मैं jsRender का प्रयास कर रहा हूं।jsrender अगर/{{= propName}}

मैं आपकी क्या अपेक्षाएं हैं:

जे एस टेम्पलेट:

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

अन्य जे एस में:

function getCurrentTheaterId() { 
    return "523"; 
} 

असल में, टेम्पलेट में, अगर यात्रा में वर्तमान थिएटर आईडी से मेल खाता है क्या जेएस फ़ंक्शन से वापस लौटा, फिर कक्षा को सक्रिय करने के लिए सेट करें। "{{= TheaterId}}" अगर स्थिति में टूट जाता है। मुझे लगता है कि अगर आपको स्थिति में मौजूदा जेसन गुणों तक पहुंचने की अनुमति नहीं है।

यह कैसे करें इस पर कोई विचार है?

उम्मीद है कि यह समझ में आता है। धन्यवाद!

उत्तर

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

क्षमा करें, मुझे यह उल्लेख करना चाहिए था कि मेरे पास पहले से ही है। –

+0

मैंने अपना मूल पोस्ट नमूना कोड के साथ संपादित किया। –

+0

धन्यवाद स्टीव। मेरे विवरण से, यदि स्थिति में {{= theaterId}} वह भाग है जो फ़ंक्शन भाग नहीं तोड़ता है। धन्यवाद था। –

2

& & समर्थित नहीं गया था जब तक हाल ही में एक बीटा उम्मीदवार उपलब्ध हो गया। टेम्पलेट में घोषणात्मक रूप से तर्क की मात्रा सीमित थी, और इसमें & & या || शामिल नहीं था। हालांकि तुलना ऑपरेटर के लिए समर्थन अब बहुत पूरा है। यहां कुछ उदाहरण दिए गए हैं: http://borismoore.github.com/jsrender/demos/step-by-step/10_comparison-tests.html

+0

एफवाईआई: बोरिस मूर जेएसआरण्डर और जेएसवीव्स के लेखक हैं! –