gpt4 book ai didi

AngularJS- 为什么我需要在 $scope.$on 内使用 $scope.$apply?

转载 作者:行者123 更新时间:2023-12-03 10:16:13 28 4
gpt4 key购买 nike

我有一些行为不符合预期的代码......我在 AngularJS Controller 中有一个事件监听器,如下所示:

$scope.$on("newClipSelected", function(e) {
$scope.$apply(function() {
$scope.isReady = true;
});
});

Controller 的标记有一个 ng-show='isReady'。当此事件处理程序运行时,ng-show 区域会按预期显示。但是,此事件处理程序不起作用:
$scope.$on("newClipSelected", function(e) {
$scope.isReady = true;
});

使用这个事件处理程序,如果我使用调试器来预期 AngularJS 范围,我确实看到 $scope.isReady=true,但是 ng-show 元素没有显示。

我的理解是 $scope.$on 实际上会适本地调用 $watch/$apply 。那么为什么在这种情况下我需要调用 $apply 呢?

该事件由在非 angularJS 异步完成事件中调用 $rootScope.$broadcast() 触发。

最佳答案

不,angular 不会触发 $apply关于事件,所以如果 $broadcast在 angular 的上下文之外被称为,您将需要 $apply用手。

查看源码here

关于AngularJS- 为什么我需要在 $scope.$on 内使用 $scope.$apply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414017/

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