我在一个有角度的演示中,其中一个人在会议上提到ng-bind比{{}}绑定更好。
其中一个原因是,ng-bind将变量放在观察列表中,只有当有模型更改时,数据才会推送到视图中,另一方面,{{}}每次都会插入表达式(我猜是角周期)并推送值,即使值更改与否。
此外,据说,如果你在屏幕上没有太多的数据,你可以使用{{}},性能问题将不可见。有人能给我解释一下这个问题吗?
我在一个有角度的演示中,其中一个人在会议上提到ng-bind比{{}}绑定更好。
其中一个原因是,ng-bind将变量放在观察列表中,只有当有模型更改时,数据才会推送到视图中,另一方面,{{}}每次都会插入表达式(我猜是角周期)并推送值,即使值更改与否。
此外,据说,如果你在屏幕上没有太多的数据,你可以使用{{}},性能问题将不可见。有人能给我解释一下这个问题吗?
当前回答
{{…}}表示双向数据绑定。但是ng-bind实际上是用于单向数据绑定的。
使用ng-bind将减少页面中的观察者数量。因此ng-bind将比{{…}}更快。所以,如果你只想显示一个值和它的更新,而不想反映它从UI到控制器的变化,那么使用ng-bind。这将提高页面性能并减少页面加载时间。
<div>
Hello, <span ng-bind="variable"></span>
</div>
其他回答
这是因为使用{{}}时,angular编译器会同时考虑文本节点和它的父节点,因为有可能合并2个{{}}节点。因此,有额外的链接会增加加载时间。当然,对于少数这样的情况,差异是不重要的,但是当你在一个有大量项目的中继器中使用这个时,它会在较慢的运行环境中造成影响。
在{{}}中有一些闪烁问题,比如当你刷新页面时,会看到一个短时间的表达式。因此,我们应该使用ng-bind来代替表达式来进行数据描述。
Ng-Bind更好的原因是,
当你的页面没有加载或当你的互联网慢或当你的网站加载一半,然后你可以看到这些类型的问题(检查屏幕截图与阅读标记)将在屏幕上被触发,这是完全奇怪的。为了避免这种情况,我们应该使用Ng-bind
{{…}}表示双向数据绑定。但是ng-bind实际上是用于单向数据绑定的。
使用ng-bind将减少页面中的观察者数量。因此ng-bind将比{{…}}更快。所以,如果你只想显示一个值和它的更新,而不想反映它从UI到控制器的变化,那么使用ng-bind。这将提高页面性能并减少页面加载时间。
<div>
Hello, <span ng-bind="variable"></span>
</div>
如果你没有使用ng-bind,而是像这样:
<div>
Hello, {{user.name}}
</div>
在user.name解析之前(在数据加载之前),你可能会看到实际的Hello, {{user.name}}
你可以这样做
<div>
Hello, <span ng-bind="user.name"></span>
</div>
如果你不介意的话。
另一个解决方案是使用ng-cloak。