调试时缺少角度作用域

Missing angular scope when debugging

本文关键字:作用域 调试      更新时间:2023-09-26

我有一个控制器,我有这样的广播:

$scope.seachColumn= function () {
    $scope.$broadcast('seachColumn', true);
}

其他监听广播的控制器:

$scope.$on('seachColumn', function (event) {
    //console.log($scope);
    console.log('vuala');
});

我注释行console.log($scope),然后使用Chrome浏览器我创建行console.log('vuala')上的断点。当Chrome停止在这一行,并在控制台中,我尝试执行命令console.log($scope),我得到一个错误:

Uncaught ReferenceError: $scope is not defined

但是如果我取消console.log($scope)行注释,那么这行打印$scope没有错误。

为什么会这样?

只是出于好奇(可能不是一个解决方案,但可能很有趣),如果将该函数(包含日志调用)绑定到包含$scope的作用域,会发生什么?

$scope.$on('seachColumn', function (event) {
    //console.log($scope);
    console.log('vuala');
}.bind ( this )); // or whatever context makes sense.

未定义意味着$作用域还不存在(这似乎不太可能,因为调用函数作为参数的另一个函数成功了),或者函数存在于另一个上下文中,日志调用看不到它(因为它在函数作为参数中)。