在Angularjs中将数据保存在函数外部

时间:2016-03-22 13:27:48

标签: angularjs scope controller

我想在我的功能之外获取数据。

mycode:

angular.module('myApp')
  .controller('ParameterCtrl', function ($scope) {
    $scope.data = null;
    fireCompoment.on("child_added", function(snapshot, prevChildKey) {
      $scope.data = snapshot.val();
      console.log($scope.data); // HERE DATA = SOMEDATA
    });
    console.log($scope.data); // HERE DATA = NULL
  });

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

请记住:Javascript始终是同步和单线程的。当您进行AJAX调用并console.log($scope.data)时,它会同时发生。 您可以做的是将console.log($scope.data)包装到函数中以使其成为异步。

angular.module('myApp')
.controller('ParameterCtrl', function ($scope) {
  $scope.data = null;
  fireCompoment.on("child_added", function(snapshot, prevChildKey) {
    $scope.data = snapshot.val();
    console.log($scope.data); // HERE DATA = SOMEDATA
    printData();
  });

  function printData() {
    console.log($scope.data);
  }

});

答案 1 :(得分:0)

只需检查angularJs中的 </html> ,fireCompoment.on()就会异步进行,这样您就可以使用$q.defer();服务获得解决和承诺。

希望它会对你有所帮助。