2016-04-15 135 views
0

{{ x + ', ' + y }}{{ x }}, {{ y }}有什么影响吗?AngularJS:`{{x +','+ y}}与`{{x}},{{y}}`

特别是在看守人的成本方面?

我想知道是否可以通过组合双向绑定大括号来减少摘要循环的数量。

在此先感谢。

+0

要知道肯定的唯一方法就是对它进行基准测试。摘要周期数不会改变。 – zeroflagL

回答

2

一个digest循环会处理其中的一个或两个,如果它要完成的话;它不会是x的摘要,然后是y的另一个摘要(除非稍后再触发新的摘要)。从技术上讲,我会说前者稍微多一点,因为它涉及字符串连接,但我怀疑这种情况必须在后面的某个时刻发生在后面的版本中。

总的来说,我不指望你会得到明显的表现差异,除非你一次显示数百或数千个表情(在这种情况下,你可能还会遇到其他问题)并应重新考虑你的方法)。

1

准确地说,第一个表达式将产生一个手表,但是角将重新计算级联。

在第二行你可能会认为会有2个手表,但它可能不是(我不知道)。我知道如果你这样做:

<span> blabla {{x}} blabla</span> 

Angular将观察跨度的全部内容。所以如果你有多个括号的使用,你很可能只有一个手表的整个事情。

2

{{}}符号比使用ng-bind指令慢:

{{}}会很脏检查在每一个消化的周期而ng-bind地方在参数传递和将更新它,只有当它改变了价值守望者。 使用ng-bind而不是{{}}的另一个优点是,当角度仍在加载时,用户将不会在页面中看到{{}}

此外,您可以使用静态的新::符号(在角1.3中引入)结合(当你知道你的变量不会改变):

<h1 data-ng-bind="::title"></h1> 

关于为{{}} VS ng-bind符号引用:

“ng-bind更快,因为它更简单。内插必须经过 通过额外的步骤验证上下文,值的jsonification和 更多。 “

+0

有没有关于'ng-bind x {{}}的性能参考?我想进一步了解它 – celsomtrindade

+0

添加了一些参考 –

+0

原来的报价是从第一个链接^^基准的方法是...不理想,报价继续_“在大多数情况下,差异并不重要“_。至于脏检:两者没有区别。 – zeroflagL