2013-02-22 19 views
8

मुझे स्थिति में धूल के साथ परेशानी हो रही है। मैं एक आंशिक 2 अलग धूल टेम्पलेट्स के लिए अंक देश कोडधूल अगर स्थिति

{>"receipt/merchantInfo/merchantInfo_{countryCode}"/} 

पर निर्भर करता है कि मैं बनाने के लिए कोशिश कर रहा हूँ है एक अगर किसी और शर्त यह है कि यह पता लगाने जाएगा अगर {countryCode} अमेरिका है। उदाहरण:

{@if cond="'{countryCode}' == 'US'"} 
<p>is country code US</p> 
{:else} 
<p>is NOT country code US</p> 
{/if} 

यह काम नहीं कर रहा है। किसी के पास कोई विचार है कि मैं इसके साथ गलत कहां गया?

+0

* स्थिति को छिद्रित करना आसान बनाने के लिए – eMarine

उत्तर

19

@if सहायक सुरक्षा छेद (यह स्थिति पर eval का उपयोग करता है) के कारण सहायक को हटा दिया गया है। मैं इसके बजाय @eq सहायक का उपयोग करने की सलाह दूंगा।

{@eq key=countryCode value="US"} 
    <p>is country code US</p> 
{:else} 
    <p>is NOT country code US</p> 
{/eq} 

यदि वह काम नहीं करता है, यकीन है कि देश कोड आपके संदर्भ में उपलब्ध है (आप उस के लिए {@contextDump/} उपयोग कर सकते हैं) बनाते हैं।

+0

सुरक्षा छेद का उल्लेख करने के लिए उपरोक्त। 'Select' के बारे में कैसे? क्या मैं 'eq',' gte' आदि के साथ 'select' का उपयोग कर सकता हूं? और मैं जटिल परिस्थितियों को कैसे लिख सकता हूं? आइए कहें 'ए> बी एंड बी बी <= सी & सी सी! = 10' – thefourtheye

+1

' चयन 'का उपयोग 'eq',' gt', 'lt', आदि के साथ किया जा सकता है। कॉम्प्लेक्स सशर्त वर्तमान में एक कथन में संभव नहीं हैं । आपको घोंसले का उपयोग करना पड़ता है और आमतौर पर कुछ कोड दोहराते हैं। 'और' और 'या 'हेल्पर्स बनाने की वार्ता हुई है, लेकिन इस बीच, यदि संभव हो, तो मैं आपके डेटा को बदलने की सलाह दूंगा। – smfoote

+0

क्या आप इसके लिए स्रोत प्रदान कर सकते हैं? Dustjs-helpers के लिए कोड/वेबसाइट का उल्लेख नहीं है कि "अगर" बहिष्कृत है। –

10

मैं यह कर जाएगा:

{@select key=countryCode } 
    {@eq value="US"}<p>is country code US</p>{/eq} 
    {@eq value="UK"}<p>is country code UK</p>{/eq} 
    {@default}<p>is NOT country code US or UK</p>{/default} 
{/select} 

सुनिश्चित करें कि आप संस्करण 1.x का उपयोग कर या बाद कर रहे हैं।

सुनिश्चित करें कि आपके पास Helpers लोड हो गया है। मैं दूसरे दिन इस में भाग गया। इसके लिए आपको काम करने की आवश्यकता है और यह आपको यह बताने में त्रुटि नहीं होगी कि यह नहीं है।

2

यदि आप @if से मोहक हैं लेकिन eval के उपयोग के आसपास सुरक्षा समस्याओं को पसंद नहीं करते हैं, तो आप मेरे वैकल्पिक @if सहायक का उपयोग कर सकते हैं। यह आपकी स्थिति को निर्दिष्ट करने के लिए एक विशेषता परीक्षण = "expr" प्रदान करता है। अभिव्यक्ति का मूल्यांकन करने के लिए eval का उपयोग नहीं किया जाता है।

अभिव्यक्ति में वेरिएबल धूल नामों और पथ से प्रतिबंधित हैं जो संदर्भ से मूल्यों तक पहुंचने के लिए उपयोग किए जाते हैं। स्थिरांक जावास्क्रिप्ट पूर्णांक, फ्लोट, हेक्स और स्ट्रिंग फॉर्म ("xx" या 'xx') हैं। ऑपरेशंस एक "चर", स्थिर, या एक बाइनरी या यूनरी अभिव्यक्ति हो सकती है जो एक मूल्य प्रदान करती है। रिलेशनल ऑपरेटर <,>, < =,> =, ==,! =। बूलियन ऑपरेटर हैं! (यूनरी), || और & & .. ऑपरेटर प्राथमिकता जावास्क्रिप्ट के समान है और स्पष्टता के लिए कोष्ठक की अनुमति है या जब प्राथमिकता आप जो चाहते हैं वह नहीं है।

{@if test="state == 'CA' || state == 'NY'"} 
    true stuff goes here 
{:else} 
    false stuff goes here 
{/if} 

नोट यह अभी भी cond = "expr" विशेषता eval() का उपयोग करता है अनुमति देने के लिए कोड है:

यहाँ एक उदाहरण है। यह मौजूदा कोड के लिए माइग्रेशन पथ प्रदान करता है।

आप इसे एनपीएम मॉड्यूल (https://npmjs.org/package/dustmotes-if) के रूप में स्थापित कर सकते हैं।

2

तुम भी उपयोग कर सकते हैं:

{#key} 
    Some content 
{:else} 
    Some other content, if key doesn't have a value 
{/key} 

उदाहरण के लिए:

डाटा

{ 
    firstName: "Mickey", 
    lastName: "Mouse", 
    website: null, 
    phone:  "1-800-DISNEYWORLD" 
} 

धूल खाका

<p>First Name: {firstName}</p> 
<p>Last Name: {lastName}</p> 
{#website} 
    <p>Website: {website}</p> 
{:else} 
    <p>Phone: {phone}</p> 
{/website} 

आउटपुट:

First Name: Mickey 
Last Name: Mouse 
Phone: 1-800-DISNEYWORLD 
संबंधित मुद्दे