Angularjs Angular Js如何处理视图和控制器触发的事件的数据绑定?

Angularjs Angular Js如何处理视图和控制器触发的事件的数据绑定?,angularjs,Angularjs,如果在视图中更改了ng模型,$scope将相应地更新,但是如果视图中有一个{{x()}和js部分中有一个$scope.x=function(){},那么当视图中发生任何事件或内容时,是否会触发x() 我不太清楚AngularJs事件和功能的原理。大多数情况下,AngularJs会正确处理$scope.x=function(){}并自动更新视图 这是因为当您的代码被执行时,应用程序执行时间只有几分钟,例如页面加载、AJAX回调等。Angular知道这些时间,并进行脏检查(比较前后的范围值) 然而,

如果在视图中更改了ng模型,$scope将相应地更新,但是如果视图中有一个{{x()}和js部分中有一个$scope.x=function(){},那么当视图中发生任何事件或内容时,是否会触发x()


我不太清楚AngularJs事件和功能的原理。

大多数情况下,AngularJs会正确处理$scope.x=function(){}并自动更新视图

这是因为当您的代码被执行时,应用程序执行时间只有几分钟,例如页面加载、AJAX回调等。Angular知道这些时间,并进行脏检查(比较前后的范围值)

然而,有时Angular可能不知道您正在更新范围属性,例如,当您与一些第三方插件集成时。在这种情况下,您需要包装代码,这将更改$scope中的作用域属性。$apply方法:

$scope.$apply(function(){
    $scope.x = function(){};
});

我希望你能尽快回复。假设在这种情况下,当与ng模型绑定的值发生变化时,angular将检查controller中的所有函数,找到指定的方法x()并运行它,但其他方法也会同时执行。这意味着您提到的angular将在两个以上的时刻检查所有相关的控制器当输入值更改时angular将更新绑定范围属性本身(而不调用$scope.x=function(){}函数)。此外,您还可以侦听作用域属性更改事件并更新其他属性,如$scope.$watch('x',function(){$scope.y=…});