成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

$translatePartialLoader加載失敗及解決方式

lbool / 2797人閱讀

摘要:按照官網(wǎng)的說法,在中添加模塊后必須刷新國際化數(shù)據(jù),因此官方建議通過直接調(diào)用,或者監(jiān)聽所觸發(fā)的事件并調(diào)用這兩種方式來刷新數(shù)據(jù)。然而按照官網(wǎng)的寫法這兩者都是無效的。解決方式問題找到了,解決起來也簡單,在初始化完畢后強制刷新一次即可,代碼如下

前言

$translatePartialLoader(以下簡寫為TPL)是angular-translate中的局部加載器,由于該加載器可以以模塊為單位同時加載多個國際化文件,因此成為angular開發(fā)SAP必選的加載器。

問題

事實上,如果按照官網(wǎng)的教程來編寫,會出現(xiàn)TPL不生效的情況,具體表現(xiàn)為在config過程中添加模塊有效,但是在controller中添加模塊無效。
按照官網(wǎng)的說法,在controller中添加模塊后必須刷新國際化數(shù)據(jù),因此官方建議通過直接調(diào)用$translate.refresh(),或者監(jiān)聽addPart所觸發(fā)的事件并調(diào)用refresh這兩種方式來刷新數(shù)據(jù)。然而按照官網(wǎng)的寫法這兩者都是無效的。

原理分析

國際化數(shù)據(jù)刷新過程中會根據(jù)變量$uses來判斷所當(dāng)前使用的語言,如果當(dāng)前$uses為空,則放棄這部分操作。而$uses會在translate模塊初始化過程中被賦值,因此如果當(dāng)模塊尚未初始化完畢,$uses尚未被賦值時執(zhí)行刷新是無效的「注:其實不完全無效,這里涉及fallback,不做過多討論」。
而translate初始化過程中會調(diào)用指定的loader獲取數(shù)據(jù),這個過程是一個異步操作,所以$uses的賦值也要等到異步操作完成后才行,在此期間會出現(xiàn)刷新失效。

解決方式

問題找到了,解決起來也簡單,在translate初始化完畢后強制刷新一次即可,代碼如下:

var initListener = $rootScope.$on("$translateChangeEnd", function () {
    initListener();
    $translate.refresh();
});

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79300.html

相關(guān)文章

  • angular-translate

    //index.config.js angular .module(app) .config(config); /** @ngInject */ function config($logProvider, $translateProvider, $translatePartialLoaderProvider) { // Enable log $log...

    why_rookie 評論0 收藏0
  • 關(guān)于 Overtrue 的拼音庫 overtrue/pinyin 為何 travis 為 error

    摘要:官網(wǎng)內(nèi)測申請方式提供個人企業(yè)聯(lián)系方式及認(rèn)證信息實名企業(yè)營業(yè)執(zhí)照照片或掃描件及申請說明,發(fā)送郵件至即可獲得內(nèi)測資格,申請從速。 showImg(https://segmentfault.com/img/bVP7c2?w=1440&h=379); 這是 https://github.com/overtrue/p... 首頁 README 中的持續(xù)集成狀態(tài)。 之前有朋友問我,這個 travi...

    ingood 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<