2016-03-22 2 views
0

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

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

похоже, что у вас есть синтаксическая ошибка в вашем первом операторе журнала – scniro

+0

Вы уверены, что вы попали в firecompoment ..? – lalitpatadiya

+0

Да, конечно, я прочитал его на консоли. – Zehef

ответ

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 службы.

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

Смежные вопросы