2013-09-02 46 views
29

Verilerimden ISO formatlı bir Tarih aldım ve aslında yapmak istediğim şey, şablonumdan doğrudan biçimim değiştirmektir. BöyleMeteor içinden bir biçimi biçimlendirin Meteor içinde Şablon

:

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

ben an kitaplığı kullanıyorum, o yüzden böyle bir şey yazabilirsiniz:

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

Ben bir yer olduğunu düşünüyorum çünkü iyi olurdu nerede Bunu yapabilmelidir. Benim şablonumda.

+1

StackOverflow'un kullandığı Soru ve Cevap formatını takip etme şansınız var mı? yani sorunuzu çözümünüzle paylaşın. Aksi halde benim bir hata benim bir hata ve onu öldürmek için. Ayrıca cevabınızı kabul etmeyi unutmayın! – booyaa

+0

@booyaa Bu nokta için teşekkürler. –

cevap

80

Çözüm oldukça basittir ve belki birisi bunu yararlı bulacaktır. Çoğu projede kullanmak istediğiniz birkaç tarih formatına sahipsiniz. Bu yüzden formatlarınızı okunabilir isimlerle tanımlamak iyi bir yaklaşım.

Bu örnekte sadece 'kısa' ve 'uzun' aldım, ama göreceksiniz ki, uzatmak çok kolay.

Yani benim istemci komut dosyası içinde bir nesne oluşturulur:

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

Ayrıca, ben bir Gidon Yardımcısı "formatDate" yarattı.

Düzenlendi: Artık Gördüğünüz gibi, benim Yardımcısı'nda moment.js lib kullanın yerine Gidonu

// 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; 
    } 
}); 

arayüzünü kullanmalısınız. Yüklemek için komut satırından sadece meteor add momentjs:moment yazın.

Ve şimdi, her yerde benim şablonları içinde böyle, iki parametreleri içeren kullanabilirsiniz:

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

Eğer momentjs dokümanlar bir göz, kendi biçimleri oluşturmak almak istiyorsanız http://momentjs.com/docs/

Mutlu kodlama!

+3

son nag, lütfen cevabınızı kabul edin, arama sonuçlarına yardımcı olur;) – booyaa

+0

Bu, if (moment) testinde (Deps recompute fonksiyonundan istisna: TypeError: undefined bir fonksiyon değil) benim için başarısız oluyor. Denedim (datetime an an instanc) ama bu yanlış döndürür ... bu ne olmalı? –

+1

Üzgünüz, başka bir nedenden dolayı başarısız oluyor. Datetime'a bir an veriyorum, dönüş momentiyle (datetime) tam bir zaman dilimi değerine sahip bir string alıyorum. .format ("Herhangi bir şey") eklediğimde, Deps recompute işlevinden İstisna: TypeError: undefined bir işlev değil. Herhangi bir fikir? –