7

我一直在阅读有关bindonce作为减少手表和提高性能的一种方式。为了更好地理解这个包,我用ng-repeat.

JSBIN 这里

没有bindonce我会得到 103 块手表、100 个列表项 + 2 个按钮。

使用bindonce我得到 3 块手表、2 个按钮 + 1 个堡垒。

如果我理解binonce正确,一旦绑定的对象被解析和渲染,它就会移除手表。所以,

bindonce使用,对对象所做的更改怎么可能仍然反映在 DOM 中?

4

1 回答 1

9

文档中有提示:

Now this example uses 0 watches per person and renders exactly the same result as the above that uses ng-. *(Angular still uses 1 watcher for ngRepeatWatch)

关键是 Angular 仍然保持 watch on ngRepeat,因此如果数组更改ngRepeat将重新渲染数组并bindonce重新应用功能。

我在这里更新了你的 jsbin 示例,以更好地说明这个http://jsbin.com/xugemico/2/edit

请注意以下添加:

<p>
  Bindonce: first item: 
  <span bindonce="arr" bo-bind="arr[0]"></span>
</p>

上面的代码bindonce在没有 ngRepeat 监视的情况下使用了第一个数组项,您会看到该值没有根据 ngRepeat 中的 bindonce 更新。

于 2014-03-12T11:17:25.177 回答