我一直在阅读有关bindonce作为减少手表和提高性能的一种方式。为了更好地理解这个包,我用ng-repeat
.
没有bindonce
我会得到 103 块手表、100 个列表项 + 2 个按钮。
使用bindonce
我得到 3 块手表、2 个按钮 + 1 个堡垒。
如果我理解binonce
正确,一旦绑定的对象被解析和渲染,它就会移除手表。所以,
bindonce
使用,对对象所做的更改怎么可能仍然反映在 DOM 中?
我一直在阅读有关bindonce作为减少手表和提高性能的一种方式。为了更好地理解这个包,我用ng-repeat
.
没有bindonce
我会得到 103 块手表、100 个列表项 + 2 个按钮。
使用bindonce
我得到 3 块手表、2 个按钮 + 1 个堡垒。
如果我理解binonce
正确,一旦绑定的对象被解析和渲染,它就会移除手表。所以,
bindonce
使用,对对象所做的更改怎么可能仍然反映在 DOM 中?
文档中有提示:
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 更新。