2013-09-24 7 views
13

एम्बरजेएस/हैंडलबार्स का उपयोग करके, मैं तत्व में कक्षा कैसे जोड़ सकता हूं, केवल तभी यदि कोई शर्त सत्य है?हैंडलबार्स सशर्त वर्ग विशेषता

<div {{#if isSearching}}class="foo"{{/if}}></div> 

इसी तरह, लेकिन कम छद्म कोड और अधिक वास्तविकता।

+0

अच्छा, यह काम कर रहा है। आप टेम्पलेट डेटा वैरिएबल के रूप में एक क्लास सूची भेज सकते हैं और यदि आप टेम्पलेट के बाहर इन चीज़ों को संसाधित करना पसंद करते हैं तो इसके बजाय इसका उपयोग करें। या आप कस्टम सहायक विधि का उपयोग कर सकते हैं ... लेकिन वास्तव में, आपको जो मिला वह आसान तरीका है। –

+0

@ सिमनबौड्रियास लेकिन यह काम नहीं करता है। अगर यह बयान के बाद सभी संपत्तियों से बच निकलता है। – alt

उत्तर

5

यह काम नहीं करेगा, क्योंकि {{#if}} सहायक आपके HTML में टैग बनाएगा। इस के बजाय कार्य करें:

<div {{bind-attr class="isSearching:foo"}}></div> 
+1

बाइंडएटर "पुराना" एम्बर सिंटैक्स बीटीडब्ल्यू (अधिक हाल के संस्करणों के साथ उपयोग नहीं किया जाता है) है। –

+0

(इसे नए में बाइंड-एटीआर कहा जाता है) –

+0

धन्यवाद - मैंने अपना उत्तर अपडेट किया – chopper

9

आप एक बूलियन शर्त के साथ {{bind-attr}} सहायक उपयोग करने के लिए है, तो आप read the guide about this कर सकते हैं।

आपके मामले में, अगर isSearching संपत्ति नियंत्रक में है, तो आप सिर्फ कर सकते हैं निम्नलिखित: http://jsfiddle.net/NQKvy/240/

+0

मार्गदर्शिका का आपका लिंक टूटा हुआ है। – bmavity

46

{{bind-:

<div {{bind-attr class="isSearching:foo"}}></div> 

आप इस बेला में पूरे कोड देख सकते हैं attr}} deprecated है। आप एम्बर 1.10 और उससे ऊपर के नए निसर bound attribute syntax का उपयोग कर सकते हैं, जैसे:

<div class="{{if isSearching 'foo'}}"></div>  
+0

यह वह जवाब है जिसे मैं ढूंढ रहा था, धन्यवाद एडम। –

संबंधित मुद्दे