当我通过广播发送数据时遇到这个问题,这是我的代码:
$rootScope.$broadcast('myEvent',{
data:"value"
});
和我的代码:
$scope.$on('myEvent', (event, args) => {
$scope.data = args.data;
console.log($scope.data);
});
console.log($scope.data);
问题是,函数内部的 console.log 显示值,但在外部我得到未定义的值,我错过了什么? 谢谢。
最佳答案
这部分代码是异步回调:
(event, args) => {
$scope.data = args.data;
console.log($scope.data);
}
这意味着一旦触发 myEvent
就会运行。当浏览器加载该脚本和该特定行时,第二个 console.log() 将立即运行,并且这部分代码不是异步而是同步的。因为在这种情况下,您的代码将在事件触发之前完全加载,所以您的“第二个”console.log() 将在“第一个”console.log() 之前运行。
我建议您阅读一些有关 how callbacks work 的内容。 。它是使用 javascript 时的核心模式之一,它将极大地帮助您了解回调在您 future 的工作中如何工作。
关于javascript - $scope.$on 使用传递的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963649/