Сохранение данных вне функции в Angularjs

0

Я хочу получить данные вне моей функции.

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
  });

Как я могу это достичь?

  • 0
    похоже, у вас есть синтаксическая ошибка в вашем первом операторе журнала
  • 0
    Вы уверены, что вы идете в пожарный коммент ..?
Показать ещё 1 комментарий
Теги:
scope
controller

2 ответа

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);
  }

});
0

Просто проверьте $q.defer(); в angularJs fireCompoment.on() переходит в асинхронный режим, поэтому вы получите разрешение и обещание с помощью службы $q.

надеюсь, это поможет вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню