Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS事件vs手表_Angularjs - Fatal编程技术网

AngularJS事件vs手表

AngularJS事件vs手表,angularjs,Angularjs,当使用AngularJS内部事件系统触发事件时,AngularJS内部会发生什么 从性能角度来看,我是否应该使用手表或事件来更新应用程序中的部分?当启动JS事件时,通常以处理所有JS事件的相同方式来处理它-这没有什么特别或独特之处 但是,angular会将处理程序包装在$apply块中,以便在它执行函数后,可以触发摘要循环: $scope.$apply(function(){ $element.on('click',function(e){ ... })

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


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

当启动JS事件时,通常以处理所有JS事件的相同方式来处理它-这没有什么特别或独特之处

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

$scope.$apply(function(){
     $element.on('click',function(e){
          ...
      });
 })
摘要循环迭代所有范围变量,将每个变量与以前的值进行比较,以确定是否有任何更改,如果有更改,则调用相应的$watch处理程序来更新视图

由于您使用的是angular,所以当您想要检测作用域上的模型已更改时,请设置$watch表达式,然后从$watch处理程序内部执行任何DOM操作。如果您关心性能,请确保您的$watch函数得到优化(即避免使用完整的jquery、避免使用昂贵的查询选择器、最小化DOM操作等)

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

可能的副本: