摘要:按照官網(wǎng)的說法,在中添加模塊后必須刷新國(guó)際化數(shù)據(jù),因此官方建議通過直接調(diào)用,或者監(jiān)聽所觸發(fā)的事件并調(diào)用這兩種方式來刷新數(shù)據(jù)。然而按照官網(wǎng)的寫法這兩者都是無效的。解決方式問題找到了,解決起來也簡(jiǎn)單,在初始化完畢后強(qiáng)制刷新一次即可,代碼如下
前言
$translatePartialLoader(以下簡(jiǎn)寫為TPL)是angular-translate中的局部加載器,由于該加載器可以以模塊為單位同時(shí)加載多個(gè)國(guó)際化文件,因此成為angular開發(fā)SAP必選的加載器。
問題事實(shí)上,如果按照官網(wǎng)的教程來編寫,會(huì)出現(xiàn)TPL不生效的情況,具體表現(xiàn)為在config過程中添加模塊有效,但是在controller中添加模塊無效。
按照官網(wǎng)的說法,在controller中添加模塊后必須刷新國(guó)際化數(shù)據(jù),因此官方建議通過直接調(diào)用$translate.refresh(),或者監(jiān)聽addPart所觸發(fā)的事件并調(diào)用refresh這兩種方式來刷新數(shù)據(jù)。然而按照官網(wǎng)的寫法這兩者都是無效的。
國(guó)際化數(shù)據(jù)刷新過程中會(huì)根據(jù)變量$uses來判斷所當(dāng)前使用的語言,如果當(dāng)前$uses為空,則放棄這部分操作。而$uses會(huì)在translate模塊初始化過程中被賦值,因此如果當(dāng)模塊尚未初始化完畢,$uses尚未被賦值時(shí)執(zhí)行刷新是無效的「注:其實(shí)不完全無效,這里涉及fallback,不做過多討論」。
而translate初始化過程中會(huì)調(diào)用指定的loader獲取數(shù)據(jù),這個(gè)過程是一個(gè)異步操作,所以$uses的賦值也要等到異步操作完成后才行,在此期間會(huì)出現(xiàn)刷新失效。
問題找到了,解決起來也簡(jiǎn)單,在translate初始化完畢后強(qiáng)制刷新一次即可,代碼如下:
var initListener = $rootScope.$on("$translateChangeEnd", function () { initListener(); $translate.refresh(); });
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/79300.html
//index.config.js angular .module(app) .config(config); /** @ngInject */ function config($logProvider, $translateProvider, $translatePartialLoaderProvider) { // Enable log $log...
摘要:官網(wǎng)內(nèi)測(cè)申請(qǐng)方式提供個(gè)人企業(yè)聯(lián)系方式及認(rèn)證信息實(shí)名企業(yè)營(yíng)業(yè)執(zhí)照照片或掃描件及申請(qǐng)說明,發(fā)送郵件至即可獲得內(nèi)測(cè)資格,申請(qǐng)從速。 showImg(https://segmentfault.com/img/bVP7c2?w=1440&h=379); 這是 https://github.com/overtrue/p... 首頁 README 中的持續(xù)集成狀態(tài)。 之前有朋友問我,這個(gè) travi...
閱讀 3686·2021-11-12 10:36
閱讀 3831·2021-09-22 15:48
閱讀 3543·2019-08-30 15:54
閱讀 2593·2019-08-29 16:44
閱讀 2364·2019-08-29 16:08
閱讀 2409·2019-08-29 16:06
閱讀 1281·2019-08-29 15:21
閱讀 3171·2019-08-29 12:39