【发布时间】:2014-03-15 13:45:01
【问题描述】:
我有一些不符合预期的代码...我在 AngularJS 控制器中有一个事件监听器,如下所示:
$scope.$on("newClipSelected", function(e) {
$scope.$apply(function() {
$scope.isReady = true;
});
});
控制器的标记有一个 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() 触发的。
【问题讨论】: