Я хочу получить данные вне моей функции.
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
});
Как я могу это достичь?
Имейте это в виду: 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);
}
});
Просто проверьте $q.defer();
в angularJs fireCompoment.on() переходит в асинхронный режим, поэтому вы получите разрешение и обещание с помощью службы $q
.
надеюсь, это поможет вам.