2016-03-01 56 views
0

什么是在为fromNow()创建自定义区域设置时的最佳实践,同时也能够在其他地方使用标准区域?Momentjs两个实例,不同于Now

我希望能够使用来自Now(“前几天”)的正常情况,而且还可以使用来自Now(“1d +”)的“short”......这意味着一天以前。我懂了工作,但现在每当我使用fromNow()它总是使用“短” fromNow版本

UI.registerHelper "momentizeFromNow", (ts) -> 
    moment(ts).fromNow() 

UI.registerHelper "momentizeFromNowShort", (ts) -> 
    momentLocal = moment 
    momentLocal.locale('en', relativeTime: 
    future: "in %s" 
    past: "%s" 
    s: "now" 
    m: "1m" 
    mm: "%dm+" 
    h: "1h" 
    hh: "%dh+" 
    d: "1d" 
    dd: "%dd+" 
    w: "%dw" 
    ww: "1w+" 
    M: "1w+" 
    MM: "1w+" 
    y: "1w+" 
    yy: "1w+" 
) 
    momentLocal(ts).fromNow() 

我曾尝试使用.clone(失败)()函数

+0

很抱歉,但什么是'UI.registerHelper'? – Pogrindis

+0

对不起,这只是一个流星的东西 – timmyg13

回答

1

定义一个定制的语言环境和然后使用.locale()来回切换或者有两个moment()变量。

事情是这样的:

moment.locale('en-cust', { 
    relativeTime : { 
    future: "in %s", 
    past: "%s", 
    s: "now", 
    m: "1m", 
    mm: "%dm+", 
    h: "1h", 
    hh: "%dh+", 
    d: "1d", 
    dd: "%dd+", 
    w: "%dw", 
    ww: "1w+", 
    M: "1w+", 
    MM: "1w+", 
    y: "1w+", 
    yy: "1w+" 
    } 
}); 
//Defined custom locale as 'en-cust' 

then = moment(1316116057189).locale('en'); 
thenCust = moment(1316116057189).locale('en-cust'); 
//Set variables to moments with specific locales 

console.log(then.fromNow()); 
//4 years ago 
console.log(thenCust.fromNow()); 
//1w+ 
console.log(thenCust.locale('en').fromNow()); 
//4 years ago -> switched locale with chaining method 
console.log(then.locale('en-cust').fromNow()); 
//1w+ -> switched locale with chaining method 
console.log(then.fromNow()); 
//1w+ as it is still set for 'en-cust' from previous chain 
then.locale('en'); 
//Set it back 
console.log(then.fromNow()); 
//4 years ago 
+0

嗯我会认为这会工作,但它可能是一个问题流星绑定到时刻和全球切换时语言环境改变。有没有什么办法可以延长时间来创建一个新的函数(fromNowShort())? – timmyg13

+1

我对流星不是很熟悉,但它不应该打破我提到的任何链条。你测试了'yourMoment.locale('en-cust')。fromNow()'链,根据需要切换'locale()'? –