我想在我的功能之外获取数据。
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 :(得分: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();
服务获得解决和承诺。