Отсутствует угловая область при отладке

#javascript #angularjs #google-chrome

#javascript #angularjs #google-chrome

Вопрос:

У меня есть контроллер, в котором у меня есть такая трансляция:

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

Другой контроллер, который прослушивает широковещательную передачу:

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

Я комментирую строку console.log($scope) , затем с помощью Chrome Explorer создаю точку пересечения в строке console.log('vuala') . Когда Chrome останавливается на этой строке и в консоли я пытаюсь выполнить команду console.log($scope) , я получаю сообщение об ошибке:

Uncaught ReferenceError: $scope is not defined

Но если я раскомментирую строку console.log($scope) , то эта строка печатается $scope без ошибок.

Почему это происходит?

Комментарии:

1. можете ли вы сделать plunkr или что-то в этомроде

2. этого не должно произойти, не могли бы вы, пожалуйста, добавить весь код вашего контроллера?

3. вы добавили $ scope.что-нибудь, что я думаю

4. Chrome Debugger по какой-то причине любит это делать — вы можете оценивать только вещи, определенные в текущем фрейме… Попробуйте перейти на один или два уровня выше в стеке вызовов

5. Попытался протестировать в Firefox Explorer и получил $scope строку с комментарием using в коде. Пока такое поведение замечено только в Chrome.

Ответ №1:

Просто из любопытства (возможно, это не решение, но может быть интересно), что произойдет, если вы привяжете эту функцию (которая содержит вызов журнала) к области, которая содержит $scope?

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

Наивно, значение undefined либо означает, что $scope еще не существует (что кажется маловероятным, поскольку другая функция, вызывающая функцию как аргумент, завершается успешно), либо функция существует в другом контексте, и вызов журнала не может ее увидеть (поскольку она находится в этой функции как аргументе).