当前位置: 首页 > news >正文

$translatePartialLoader加载失败及解决方式

前言

$translatePartialLoader(以下简写为TPL)是angular-translate中的局部加载器,由于该加载器可以以模块为单位同时加载多个国际化文件,因此成为angular开发SAP必选的加载器。

问题

事实上,如果按照官网的教程来编写,会出现TPL不生效的情况,具体表现为在config过程中添加模块有效,但是在controller中添加模块无效。
按照官网的说法,在controller中添加模块后必须刷新国际化数据,因此官方建议通过直接调用$translate.refresh(),或者监听addPart所触发的事件并调用refresh这两种方式来刷新数据。然而按照官网的写法这两者都是无效的。

原理分析

国际化数据刷新过程中会根据变量$uses来判断所当前使用的语言,如果当前$uses为空,则放弃这部分操作。而$uses会在translate模块初始化过程中被赋值,因此如果当模块尚未初始化完毕,$uses尚未被赋值时执行刷新是无效的「注:其实不完全无效,这里涉及fallback,不做过多讨论」。
而translate初始化过程中会调用指定的loader获取数据,这个过程是一个异步操作,所以$uses的赋值也要等到异步操作完成后才行,在此期间会出现刷新失效。

解决方式

问题找到了,解决起来也简单,在translate初始化完毕后强制刷新一次即可,代码如下:

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

相关文章:

  • shell与if相关参数
  • Java threadpool机制深入分析
  • GC — 垃圾收集算法
  • Bloglines手机伴侣支持走cmwap代理了
  • 页面每两秒刷新一次时间(java web)
  • 搭建LNMP中遇到PHP只能下载无法打开的处理
  • 为什么要用深度学习来做个性化推荐 CTR 预估
  • Win2008R2修改远程桌面端口
  • DateUtils时间的封装
  • 数学口袋精灵bug的发现及单元测试
  • 用fail2ban阻止ssh暴力破解root密码
  • Centos 下面升级系统内核(转)
  • 两个二进制数求和
  • magento 货币换算
  • iOS -- tableView顶部留白
  • [LeetCode] Wiggle Sort
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • android图片蒙层
  • Angularjs之国际化
  • Java比较器对数组,集合排序
  • JS函数式编程 数组部分风格 ES6版
  • Linux CTF 逆向入门
  • 工作手记之html2canvas使用概述
  • 警报:线上事故之CountDownLatch的威力
  • 驱动程序原理
  • 延迟脚本的方式
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 阿里云服务器如何修改远程端口?
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #大学#套接字
  • (1)STL算法之遍历容器
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (LeetCode C++)盛最多水的容器
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (第一天)包装对象、作用域、创建对象
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (剑指Offer)面试题34:丑数
  • (七)Java对象在Hibernate持久化层的状态
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • .NET : 在VS2008中计算代码度量值
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net core 依赖注入的基本用发
  • .NET和.COM和.CN域名区别
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @WebService和@WebMethod注解的用法
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [DAX] MAX函数 | MAXX函数