能见度:
当你的 angularjs 正在引导时,用户可能会在 html 中看到你放置的括号。这可以处理ng-cloak
。但对我来说,这是一个解决方法,如果我使用,我不需要使用ng-bind
.
表现:
The {{}}
is 慢得多.
This ng-bind
is a 指示并将在传递的变量上放置一个观察者。
所以ng-bind
仅适用,当传递的值确实改变了.
另一方面,括号将是脏检查并刷新于every $digest
,即使是不必要.
我目前正在构建一个大型单页应用程序(每个视图约 500 个绑定)。从 {{}} 更改为严格ng-bind
确实为我们节省了大约 20%scope.$digest
.
建议:
如果您使用翻译模块,例如角度平移,总是更喜欢指令在括号注释之前。
{{'WELCOME'|translate}}
=> <span ng-translate="WELCOME"></span>
如果您需要过滤器功能,最好选择指令,它实际上只使用您的自定义过滤器。$filter 服务的文档 https://docs.angularjs.org/api/ng/service/%24filter
更新2014年11月28日(但可能偏离主题):
在 Angular 1.3 倍中bindonce
功能被引入。因此,您可以绑定一次表达式/属性的值(当 != 'undefined' 时将被绑定)。
当您不希望绑定发生更改时,这非常有用。
用法:
地方::
在绑定之前:
<ul>
<li ng-repeat="item in ::items">{{item}}</li>
</ul>
<a-directive name="::item">
<span data-ng-bind="::value"></span>
例子:
ng-repeat
输出表中的一些数据,每行有多个绑定。
翻译绑定、过滤器输出,在每个范围摘要中执行。