#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 еще не существует (что кажется маловероятным, поскольку другая функция, вызывающая функцию как аргумент, завершается успешно), либо функция существует в другом контексте, и вызов журнала не может ее увидеть (поскольку она находится в этой функции как аргументе).