AngularJS Events与手表

时间:2014-09-10 13:10:51

标签: angularjs

使用Angular内部事件系统触发事件时,AngularJS内部会发生什么?

从性能的角度来看,我是否倾向于使用手表或事件来更新应用程序中的部件?

1 个答案:

答案 0 :(得分:3)

当JS事件被触发时,它的处理方式通常与处理所有JS事件的方式相同 - 没有什么特别或独特的。

但是,angular会将处理程序包装在$ apply块中,以便在执行该函数后,它可以触发摘要周期:

$scope.$apply(function(){
     $element.on('click',function(e){
          ...
      });
 })

摘要循环遍历所有范围变量,将每个变量与前一个值进行比较以确定是否有任何变化,如果有变化,则调用相应的$ watch处理程序来更新视图。

由于您正在使用angular,因此当您想要检测范围上的模型已更改时设置$ watch表达式,然后从$ watch处理程序内部执行任何DOM操作。如果您担心性能,请确保优化$ watch函数(即避免使用完整的jquery,避免使用昂贵的查询选择器,最大限度地减少DOM操作等。)

要回答您的问题,您应该使用$ watch来监控模型的更改,并使用$ watch函数来更新您的视图。