$ scope。$ on use传递值

时间:2017-03-22 22:13:49

标签: 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里面的函数显示了值,但外面我得到了未定义,我错过了什么? 感谢。

1 个答案:

答案 0 :(得分:0)

这部分代码是异步回调:

(event, args) => {
  $scope.data = args.data;
  console.log($scope.data);
}

这意味着一旦myEvent被触发,它就会运行。当浏览器加载该脚本和该特定行时,第二个console.log()将立即运行,并且这部分代码不是异步但是同步。因为在这种情况下你的代码会在你的事件被触发之前完全加载,你的第二个" console.log()将在" first"之前运行。之一。

我建议您阅读一些关于how callbacks work的内容。这是使用javascript时的核心模式之一,它将帮助您了解回调如何在您未来的任何工作中发挥作用。