2013-02-12 13 views
6

वहाँ इस से जेड में एक स्ट्रिंग के प्रथम वर्ण भुनाने के लिए एक बेहतर तरीका है?बेहतर तरीका एक जेड टेम्पलेट में ucfirst के लिए?

for list in project.lists 
    li #{ucfirst(list.name)} 

धन्यवाद:

for list in project.lists 
    - list.name = list.name.charAt(0).toUpperCase() + list.name.slice(1); 
    li #{list.name} 

हर बार जब मैं फायदा उठाने में एक चर बदसूरत है चाहता हूँ ऐसा करने से, वहाँ जेड में किसी भी तरह से है कि मुझे लगता है कि मैं की तरह हर टेम्पलेट में उपलब्ध एक कस्टम समारोह को परिभाषित कर सकते है अग्रिम रूप से!

उत्तर

15

#{} की सामग्री मानक जे एस के रूप में क्रियान्वित कर रहे हैं, तो आप सहायक कार्यों में उस तरह चीजों के साथ प्रयोग के लिए पारित कर सकते हैं। आप निर्दिष्ट नहीं किया है, लेकिन यह सोचते हैं आप एक्सप्रेस के साथ जेड उपयोग कर रहे हैं, तो आप कुछ इस तरह कर सकते हैं:

app.locals.ucfirst = function(value){ 
    return value.charAt(0).toUpperCase() + value.slice(1); 
}; 

कि एक समारोह का पर्दाफाश होगा ucfirst बुलाया जेड टेम्पलेट के भीतर। तुम भी हर बार जब आप प्रस्तुत करना locals के हिस्से के रूप में इसे पारित कर सकता है, लेकिन अगर आप एक्सप्रेस का उपयोग कर रहे हैं यह यह स्वचालित रूप से करेंगे।

+1

यही था मैं के लिए, धन्यवाद वास्तव में क्या देख रहा था:

mixin ucfirst(text) - text = text.charAt(0).toUpperCase() + text.slice(1); . #{text} 

बस किसी भी अन्य mixin के रूप में इस फोन:) –

+0

खुशी है कि मैं इस पर ठोकर खाई, जावास्क्रिप्ट में एक PHP समारोह का उपयोग कर एक तरह से गंदा लगता है, लेकिन 'ucfirst' अभी भी काम है! –

0

आप सीएसएस का सहारा करने को तैयार हैं, तो आप एक वर्ग है कि लक्ष्य तत्व के भीतर प्रत्येक शब्द का पहला अक्षर को बड़ा बना सकते हैं।

सीएसएस

.caps { 
    text-transform: capitalize; 
} 

जेड

div.caps 
    each foo in ['one', 'two', 'three'] 
     span #{foo} 

परिणामस्वरूप एचटीएमएल

<div class="caps"><span>one</span><span>two</span><span>three</span> 

परिणामस्वरूप दृश्य

012,
One Two Three 
0

आप घूंट के साथ बन्दर का उपयोग कर रहे हैं, तो यह सहायक हो सकता है:

li 
    +ucfirst(list.name) 
संबंधित मुद्दे