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