2017-03-22 43 views
1

我需要瞬间改变短月份。 但我做不到。 我已经尝试设置如何设置简短的月份名称使用烬时刻

localeOutputPath: 'assets/moment-locales' 

并调用

Ember.$.getScript('/assets/moment-locales/ru.js'); 

在这种情况下,我有烬蜃错误

Your Ember app tried to GET '/assets/moment-locales/ru.js?_=1490191145335', 
but there was no route defined to handle this request. Define a route that 
matches this path in your mirage/config.js file 

是简单的方式来将时刻设定短短几个月的名字吗?

+0

有什么不清楚我的答案?请克隆我提供的源代码,并在需要时提出进一步的问题。 – alptugd

回答

0

我假设你使用的是ember-moment addon;并已配置config/environment.js

moment: { 
    // This will output _all_ locale scripts to assets/moment-locales 
    localeOutputPath: 'assets/moment-locales' 
}, 

正如您所提及的。

Ember.$.getScript('/assets/moment-locales/ru.js'); 

提供了一种在需要时动态加载时刻ru区域设置的方法。这意味着您不需要将相关语言环境包含到应用程序的JavaScript文件中,而是希望在应用程序中的某些用户请求中加载相关语言环境。通常最好在路由器的挂接方法(如beforeModelmodel)内执行此类加载操作。

为了从moment获得简短的月份名称;您通过

import moment from 'moment'; 

需要先进口ES6 moment模块,并与

moment.monthsShort() 

至于我可以看到接入短月份名称;您请求语言环境的方式存在问题,因此您收到了您提到的错误。我相信一个工作代码是纯文本更好的解释;因此我创建了以下git repository以说明如何在路线中动态更改区域设置,以及如何显示从moment检索到的短名称。请通过克隆并在本地主机上运行来查看它。

在此存储库的应用程序中,application.hbs包含指向5个子路径的链接;每个显示不同语言的月份短名称。动态加载相关语言环境的技巧的代码是routes/locale-route.js文件的model钩子方法。如果区域设置已经加载(请注意,默认情况下,英文是moment),它只是通过切换到目标区域设置(moment.locale(localeToLoad);)返回月份的短名称。否则,它会对服务器执行远程调用,并等待响应(使用承诺)返回月份名称。所有5种不同语言的路线都从这条基地路线延伸而来。一旦从服务器加载语言环境,您不再需要再次加载它,并且locale-route已经按照我的解释处理它。我希望有所帮助。

看完您的评论后,我更新了源代码以包含ember-cli-mirage。 Mirage是一款客户端模拟服务器,用于开发,测试和原型化您的应用程序。一旦你将它作为一个依赖包含它开始拦截你的远程调用请求。因此,在你的情况下,海市蜃楼拦截要求相关区域设置的请求。你需要做的是通过海市蜃楼传递语言环境。为了做到这一点,你需要添加以下

this.passthrough('/assets/moment-locales/**'); 

mirage/config.js让海市蜃楼不会在运行要求苛刻的时刻,语言环境干扰。请参阅我提供的git存储库下的related file。这肯定会解决你的问题。

+0

Call Ember。$。getScript('/ assets/moment-locales/ru.js');是不好的决定,因为这个调用将被Ember-mirage捕获,并会失败,并且无法处理这个URL。 –

+0

@AlexeyVashchenkov mirage是开发,测试和原型的客户端模拟服务器;所以它不会在实际生产中使用。我不知道为什么海市蜃楼拦截你的电话动态加载区域设置。你说:“Call Ember。$。getScript('/ assets/moment-locales/ru.js');是不好的决定”;我不同意这一点。如[ember-moment](https://github.com/stefanpenner/ember-moment)中所示,这是动态加载语言环境的建议方法。你的问题不清楚,至少对我而言。您是否需要根据需要加载语言环境? – alptugd

+0

@AlexeyVashchenkov我现在更了解你的问题,我更新了答案。请尝试我写的东西,看看我的源代码(我现在已经包含海市蜃楼了,因为它是你的情况!)。不要忘记接受和upvote请:) – alptugd

相关问题