javascript - $scope.$on 使用传递的值

标签 javascript angularjs angularjs-scope

当我通过广播发送数据时遇到这个问题,这是我的代码:

$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/

相关文章:

angularjs - Protractor - 如何验证切换按钮是否已选择/启用或未选择?

json - 获取要在 if 语句中使用的选定值

javascript 对象元素错误

javascript - Relay 使用什么来决定将哪些 outputFields 包含在突变响应中?

javascript - 计算二维数组中的行数

angularjs - 如何根据按键将光标定位在输入字段中?

php - ionic + Ubuntu : connect to mysql/phpmyadmin

javascript - Jquery FullCalendar 延长开始日期或结束日期

javascript - AngularJS - 尝试为 url slug 创建自定义指令

angularjs - 如何在模板中设置范围?