gpt4 book ai didi

javascript - AngularJS 和 WebSockets : Callback function needs $scope. $apply() 工作

转载 作者:行者123 更新时间:2023-11-30 10:15:24 26 4
gpt4 key购买 nike

我正在使用 AngularJS 和电话网络服务通过 WebSockets 调用电话。
Web 服务有几个回调,例如 Phone.onIncomingCall

当我使用此函数设置 $scope 变量时, View 不会自动更新,除非我在之后立即使用 $scope.$apply

Phone.onIncomingCall = function(){
$scope.myVar = "newValue";
$scope.$apply(); // only works if I call this line
};

这种行为的原因是什么(这是预期的),是否有办法在每个函数中使用 $scope.apply()

最佳答案

Angular“不知道”你对范围变量所做的更新,因为你是从 Angular 上下文之外更新它的。来自 $apply 的文档:

$apply() is used to execute an expression in angular from outside of the angular framework. (For example from browser DOM events, setTimeout, XHR or third party libraries). Because we are calling into the angular framework we need to perform proper scope life cycle of exception handling, executing watches.

通过在作用域上运行$apply,从$rootScope调用$digest,这将触发任何$watcher 在 $scope.myVar 上注册。在这种情况下,如果您通过插值在 View 中使用变量,这就是 $watcher 注册的地方。

关于javascript - AngularJS 和 WebSockets : Callback function needs $scope. $apply() 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24084551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com