2017-03-22 42 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

相關問題