AngularJS事件vs手表
当使用AngularJS内部事件系统触发事件时,AngularJS内部会发生什么AngularJS事件vs手表,angularjs,Angularjs,当使用AngularJS内部事件系统触发事件时,AngularJS内部会发生什么 从性能角度来看,我是否应该使用手表或事件来更新应用程序中的部分?当启动JS事件时,通常以处理所有JS事件的相同方式来处理它-这没有什么特别或独特之处 但是,angular会将处理程序包装在$apply块中,以便在它执行函数后,可以触发摘要循环: $scope.$apply(function(){ $element.on('click',function(e){ ... })
从性能角度来看,我是否应该使用手表或事件来更新应用程序中的部分?当启动JS事件时,通常以处理所有JS事件的相同方式来处理它-这没有什么特别或独特之处 但是,angular会将处理程序包装在$apply块中,以便在它执行函数后,可以触发摘要循环:
$scope.$apply(function(){
$element.on('click',function(e){
...
});
})
摘要循环迭代所有范围变量,将每个变量与以前的值进行比较,以确定是否有任何更改,如果有更改,则调用相应的$watch处理程序来更新视图
由于您使用的是angular,所以当您想要检测作用域上的模型已更改时,请设置$watch表达式,然后从$watch处理程序内部执行任何DOM操作。如果您关心性能,请确保您的$watch函数得到优化(即避免使用完整的jquery、避免使用昂贵的查询选择器、最小化DOM操作等)
要回答您的问题,您应该使用$watchs监视模型的更改,并使用$watch函数更新视图 可能的副本: