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