据我所知,ng-show和其他绑定一样,一旦摘要稳定,就应该停止调用相关的方法.考虑到这一点,我希望看到以下console.log()两次.然而,它每秒记录一次.
@H_404_16@
正确的理解是,一旦摘要“稳定”,就会调用ng-show.但是,您可能无法理解的是,应用摘要周期可能会被许多事情触发,因此您的ng-show将被多次调用此范围.您可以调试并检查此范围的apply / digest的调用次数与ng-show的方法完全相同.无法保证只应调用一次,两次或任何时间.只要在您的示波器上触发摘要/应用周期,您就会获得console.log.就那么简单.
我的理解是否有缺陷,我的实施,或者这是否按预期运作,我不应该担心这些方法会不断被称为负面的性能影响?
方法(在CoffeeScript中)
$scope.showThis = -> console.log("foobar") true
带有ng-show的HTML标记
<div ng-show="showThis()">hey,you can see me!</div>
感谢您的任何见解=]
当然,触发摘要/应用周期的原因可能是多次,但在我看来,如果你不触发浏览器事件或不做重新加载或者不做一些超时的事情,它最终应该停止.如果它没有停止,那么你搞砸了某个地方.
我为你创建了一个Plunkr,所以你可以在正常的情况下检查它,它会被调用一次或两次,如果你不采取行动,没有任何反应.但是,如果您按下更新完全不同的范围值的按钮,则会触发范围摘要/应用周期,您将获得一个额外的console.log: