Angularjs 理解bindonce限制

Angularjs 理解bindonce限制,angularjs,angularjs-directive,bindonce,Angularjs,Angularjs Directive,Bindonce,我一直在读关于减少手表数量和提高性能的文章。为了更好地理解这个包,我用ng repeat做了一个例子 如果没有bindonce,我将得到103块手表,100个列表项+2个按钮 使用bindonce我得到了3块手表,2块手表+1块手表 如果我正确理解了binonce,则在解析和渲染绑定对象后,它会移除手表。所以 使用bindonce,对对象所做的更改怎么可能仍然反映在DOM中?文档中有一个提示: 现在,此示例每人使用0个手表,并呈现与上面使用ng-的结果完全相同的结果*(Angular仍使用1台

我一直在读关于减少手表数量和提高性能的文章。为了更好地理解这个包,我用
ng repeat
做了一个例子

如果没有bindonce,我将得到103块手表,100个列表项+2个按钮

使用
bindonce
我得到了3块手表,2块手表+1块手表

如果我正确理解了
binonce
,则在解析和渲染绑定对象后,它会移除手表。所以


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

文档中有一个提示:

现在,此示例每人使用0个手表,并呈现与上面使用ng-的结果完全相同的结果*(Angular仍使用1台手表作为ngRepeatWatch)

关键是Angular仍在监视
ngRepeat
,因此,如果阵列发生变化
ngRepeat
将重新渲染阵列,并重新应用
bindonce
功能

我已经更新了您的文档,以便更好地说明这一点

请注意以下添加内容:

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

Bindonce:第一项:

上面的代码在第一个数组项上使用了
bindonce
,没有使用ngRepeat的手表,您将看到该值没有按照ngRepeat中的bindonce更新