关于javascript:AngularJS:为什么ng-bind在角度上优于{{}}?

AngularJS : Why ng-bind is better than {{}} in angular?

我是在一个有棱角的演讲中,其中一个在会议上提到的人,ng-bind{{}}更具有约束力。

其中一个原因是,ng-bind把变量放在观察列表中,只有当模型发生变化时,数据才会被推到视图中,另一方面,{{}}每次都会插入表达式(我猜是角循环)并推送该值,即使该值发生变化或没有变化。

另外,如果屏幕上没有太多数据,可以使用{{}},性能问题将不可见。有人能帮我解释一下这个问题吗?


能见度:

当您的AngularJS引导时,用户可能会看到您在HTML中放置的括号。这可以用ng-cloak处理。但对我来说,这是一个解决方法,如果我使用ng-bind,我不需要使用它。

性能:

{{}}慢得多。

这个ng-bind是一个指令,将在传递的变量上放置一个观察程序。因此,只有当传递值实际发生变化时,ng-bind才适用。

另一方面,即使不需要,每个$digest中的支架都将被脏检查和刷新。

我目前正在构建一个大的单页应用程序(每个视图大约有500个绑定)。从改为严格的ng-bind,每一个scope.$digest节约了20%左右。

建议:

如果使用翻译模块(如Angular Translate),则始终首选括号注释之前的指令。

{{'WELCOME'|translate}}=>

If you need a filter function, better go for a directive, that actually just uses your custom filter. $filter服务的文档

更新日期:2014年11月28日(但可能不在主题范围内):

在角1.3x中,引入了bindonce功能。因此,可以将表达式/属性的值绑定一次(将在以下时间绑定!)="未定义")。

当您不希望绑定发生更改时,这很有用。

用途:在装订前放置::

1
2
3
4
5
6
7
8
9
10
<ul>
 
  <li ng-repeat="item in ::items">{{item}}
</li>


</ul>
 

<span data-ng-bind="::value"></span>

例子:

ng-repeat输出表中的一些数据,每行有多个绑定。转换绑定,过滤输出,在每个范围摘要中执行。


如果您不使用ng-bind,则应使用如下内容:

1
  Hello, {{user.name}}

在解析user.name之前(在加载数据之前),您可能会看到实际的Hello, {{user.name}}一秒钟。

你可以这样做

1
  Hello, <span ng-bind="user.name"></span>

如果这是你的问题。

另一种解决方案是使用ng-cloak


ng-bind优于{{...}}

例如,您可以执行以下操作:

1
  Hello, {{variable}}

这意味着由所附的整个文本Hello, {{variable}}将被复制并存储在内存中。

如果你改为这样做:

1
  Hello, <span ng-bind="variable"></span>

只有值的值将存储在内存中,而Angular将注册一个仅由变量组成的观察者(观察表达式)。


基本上,双卷曲语法更容易阅读,并且需要更少的输入。

这两种情况产生相同的输出,但是……如果您选择使用{{}},则用户有可能在使用angular呈现模板之前看到{{}}几毫秒。因此,如果您注意到任何{{}},那么最好使用ng-bind

同样重要的是,只有在Angular应用程序的index.html中,才能取消呈现{{}}。如果您使用的是指令,那么模板,就没有机会看到这一点,因为Angular首先呈现模板,然后将其附加到DOM。


这意味着{{...}}双向数据绑定。但是,吴绑定实际上是意味着单向数据绑定。

你想使用的NG减少数的人在你的页面。四、将更快比{{...}}绑定。所以,如果你只想显示a值和它的更新,它并不想反映更改UI反馈到控制器,然后去吴绑定。这将提高性能和减少页面页面加载时间。

1
  Hello, <span ng-bind="variable"></span>

这是因为对于{{}},角度编译器同时考虑文本节点和其父节点,因为有可能合并2个{{}}节点。因此有额外的链接器增加了加载时间。当然,对于一些这样的情况,差异是无关紧要的,但是当您在大量项目的中继器中使用它时,它将在较慢的运行时环境中造成影响。


enter image description here

原因为什么吴绑定是更好的,因为

当你的页面是不加载当您的网络或是慢或当您的网站加载的帮助,然后你可以看到论文类型的问题(检查屏幕读取触发和标记)将完全在屏幕这是奇怪的。我们应该为了避免搜索使用的NG绑定


在中有一些闪烁的问题,比如刷新页面时,会看到一个短暂的时间垃圾表达式。因此,我们应该使用ng bind而不是expression来描述数据。


Ng绑定也有它的问题。当您尝试使用角度过滤器、限制或其他东西时,如果使用Ng绑定,可能会有问题。但在另一种情况下,ng-bind在UX端更好,当用户打开一个页面时,他/她会看到(10ms-100ms)打印符号(…)。}},这就是为什么ng bind更好。


你可以做这个网站的问题,给你一个更好的解释,这是专门为{一}。这是将吴的绑定。

corpus.hubwiz.com http:/ / / / / 2 angularjs 16125872.html参考这个网站。


医生:根据角因为ngbind是元素属性,使得它绑定到用户看不见的是在页面加载。它的主差分…

基本上每一个DOM元素加载,直到需要,我们可以ngbind湖是因为他们需要在元件属性,它等待我到教堂来播放……更多信息下面

ngbind在NG -指令模块一个ngbind属性告诉angularjs替换文本内容的HTML元素指定一个给定的表达式的值,和更新的文本内容的价值,当表达的变化。

通常,你不使用ngbind直接,但从你使用双括号{ }标记样表达的是类似的,但不详细。

它是优选使用ngbind"{ } if a表达momentarily模板是由浏览器显示在其原始状态angularjs compiles之前它。因为ngbind是元素属性,使得它绑定到用户看不见的是在页面加载。

到这个问题的替代解决方案是使用ngcloak指令。在这里

为更多的信息关于ngbind访问本页docs.angularjs.org:http://///ngbind毫微克/指令的API

你可以做一些像这样的AS NG绑定属性:

1
 

插值或做为下面:

1
{{my.name}}

一个这样的属性:在angularjs cloak NG

1
{{my.name}}

吴cloak避免闪烁在DOM和等到所有的准备!这是一个平等的NG绑定属性。


ng-bind也更安全,因为它将html表示为字符串。

例如,'