【问题标题】:AngularJS: Interpolate string in template after directiveAngularJS:在指令后插入模板中的字符串
【发布时间】:2020-01-28 20:15:31
【问题描述】:

我在模板上应用翻译并像这样使用“翻译”指令:

<span translate>Hello {{name}}!</span>` 

在德语的单独 de.json 文件中,我有翻译键值对,例如 {"Hello {{name}}!": "Hallo {{name}}!"}。 在运行时,我的“翻译”指令假设将“跨度”内的内容替换为“你好 {{name}}!”然后 AngularJS 需要插入模板字符串。

不幸的是,今天它的工作方式相反:第一个 AngJS 进行插值,然后应用我的指令。

问题:在 AngularJs 运行插值之前,是否可以在 AngJS 中设置要应用的指令?

【问题讨论】:

  • 你有 CodePen、StackBlitz、Plunkr 或任何其他类型的复制品吗?

标签: angularjs internationalization directive angular-translate


【解决方案1】:

来自 AngularJS Interpolation Guide:

interpolateDirective 的优先级为100,并在 preLink` 函数中设置手表

来自 AngularJS $compile Docs:

priority

当在单个 DOM 元素上定义了多个指令时,有时需要指定指令的应用顺序。优先级用于在调用编译函数之前对指令进行排序。优先级被定义为一个数字。首先编译具有更高数值优先级的指令。预链接功能也按优先级顺序运行,但后链接功能按相反顺序运行。具有相同优先级的指令的顺序是未定义的。默认优先级为0

Angular Translate 库在 $translateProvider API 中有一个 directivePriority(priority) 函数,允许您将指令配置为以更高的优先级运行,例如 101。这应该让您的 translate 指令在插值之前运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2014-01-26
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多