2013-09-02 11 views
29

में हैंडलबार टेम्पलेट के अंदर से एक दिनांक स्वरूपित करें मुझे अपने डेटा से एक आईएसओ स्वरूपित तिथि मिली है और मैं वास्तव में क्या करना चाहता हूं, मेरे टेम्पलेट से सीधे मेरे दिनांक प्रारूप को संशोधित करना है।मेटीर

इस तरह:

{{format my.context.date "myFormat"}} 

मैं पल पुस्तकालय का उपयोग कर रहा है, इसलिए मैं कुछ इस तरह लिख सकते हैं:

{{formatDate my.context.date "DD.MM.YYYY HH:mm"}} // 03.09.2013 18:12 

यह अच्छा होगा क्योंकि मुझे लगता है कि यह जगह है जहाँ मैं ऐसा करने में सक्षम होना चाहिए। मेरे टेम्पलेट में।

+1

कोई भी मौका आप स्टैक ओवरव्लो का उपयोग करने वाले क्यू एंड ए स्वरूपण का पालन कर सकते हैं? यानी अपने समाधान के साथ प्रश्न पोस्ट करें। अन्यथा कोई मेरी विज्ञापन को किसी विज्ञापन के लिए गलती करता है और उसे मार देता है। अपने जवाब को स्वीकार करना भी न भूलें! – booyaa

+0

@booyaa इस बिंदु के लिए धन्यवाद। –

उत्तर

80

समाधान काफी सरल है, और शायद कोई इसे उपयोगी पाएगा। अधिकांश परियोजनाओं में आपके पास कुछ दिनांक प्रारूप हैं जिनका आप उपयोग करना चाहते हैं। तो पढ़ने योग्य नामों के साथ अपने स्वरूपों को परिभाषित करने के लिए यह एक अच्छा तरीका है।

इस उदाहरण के लिए मैंने केवल 'छोटा' और 'लंबा' लिया, लेकिन आप देखेंगे, यह विस्तार करना बहुत आसान है।

तो मैं अपने क्लाइंट स्क्रिप्ट में एक वस्तु बनाया:

var DateFormats = { 
     short: "DD MMMM - YYYY", 
     long: "dddd DD.MM.YYYY HH:mm" 
}; 

इसके अलावा, मैं एक Handlebars हेल्पर "formatDate" बनाया गया।

संपादित: अब आप Handlebars

// Deprecated since version 0.8.0 
Handlebars.registerHelper("formatDate", function(datetime, format) { 

// Use UI.registerHelper.. 
UI.registerHelper("formatDate", function(datetime, format) { 
    if (moment) { 
    // can use other formats like 'lll' too 
    format = DateFormats[format] || format; 
    return moment(datetime).format(format); 
    } 
    else { 
    return datetime; 
    } 
}); 

के बजाय यूआई का उपयोग करना चाहिए आप देख सकते हैं, मैं अपने सहायक में moment.js lib का उपयोग करें। इसे स्थापित करने के लिए, बस अपनी कमांड लाइन से meteor add momentjs:moment टाइप करें।

और अब, हर जगह मेरे टेम्पलेट्स में मैं इसे दो पैरामीटर के साथ इस तरह का उपयोग कर सकते:

{{formatDate MyISOString "short"}} // 02 September - 2013 
{{formatDate MyISOString "long"}} // Monday 02.09.2013 18:00 

आप अपने खुद के प्रारूपों, momentjs डॉक्स पर एक नज़र बनाने लेना चाहते हैं http://momentjs.com/docs/

हैप्पी कोडिंग!

+3

अंतिम नाग, कृपया अपना उत्तर स्वीकार करें, यह खोज परिणामों में सहायता करता है;) – booyaa

+0

यह मेरे लिए विफल हो रहा है अगर (पल) परीक्षण (Deps recompute फ़ंक्शन से अपवाद: TypeError: अपरिभाषित कोई फ़ंक्शन नहीं है) किस प्रकार का अर्थ समझ में आता है। मैंने कोशिश की (पलटाइम उदाहरण पल) लेकिन यह झूठी वापसी करता है ... यह क्या होना चाहिए? –

+1

क्षमा करें, एक अलग कारण के लिए विफल रहा है। मैं डेटाटाइम में एक पल इनपुट कर रहा हूं, रिटर्न पल (डेटाटाइम) के साथ मुझे एक पूर्ण टाइमज़ोन वैल्यू के साथ एक स्ट्रिंग वापस मिलती है। यदि मैं .format ("कुछ भी बिल्कुल") जोड़ता हूं, तो मुझे लगता है कि Deps से अपवाद फ़ंक्शन पुन: सम्मिलित करता है: TypeError: अपरिभाषित कोई फ़ंक्शन नहीं है। कोई विचार? –