Angular 翻译属性与过滤器

Angular translate attribute vs filter

这两个哪个更好?

<span translate="key">Key</span>

<span>{{'key' | translate}}</span>

它们都很好而且工作正常,但在第一种情况下我必须填写元素的内容。

使用该属性在性能方面更好,尤其是当您打算对将包含在 ngRepeats 中的元素使用翻译时。这是因为过滤器在内部工作的方式。

每次有一个摘要循环,angularjs 重新加载所有包含过滤器的表达式。这是因为 angular 不可能知道过滤器是否已更改。这意味着,即使翻译的键没有改变,但作用域上的一些其他值发生了变化,angular 将查看每个翻译并再次翻译,只是得出结论,它们都是保持不变。

属性更智能,因为指令的开发者可以明确控制何时应该重新渲染以及应该创建什么观察者。

编辑:据我所知,第一个用例中的内容不需要填写。您可以将其留空。