From your plunker code, you have a service that looks like this:
angular.module('plunker');
.service('myService', function($firebaseRef, $firebaseObject){
this.getUserData = function(el) {
$firebaseObject($firebaseRef.users.child(this.localStorage().uid)).$loaded(function(data) {
el(data);
})
}
});
and such a controller:
app.controller('MainCtrl', function($scope, myService) {
myService.getUserData(function(response) {
$scope.uid = response;
})
console.log($scope.uid);
$scope.postRequest = function(val) {
$firebaseArray($firebaseRef.requests.child($scope.uid)).$add(val);
console.log(val)
console.log($scope.request);
}
});
The problem is that the line console.log($scope.uid);is printing undefined.
, getUserData , , response, (Firebase) , console.log.
function(response) { $scope.uid = response; } , (HTTP 2xx), . , , , , + , . , 150 .
, , console.log, response , .. $scope.uid , , console.log undefined.
, , , . , - :
app.controller('MainCtrl', function($scope, myService) {
myService.getUserData(function(response) {
$scope.uid = response;
console.log($scope.uid);
});
});
AngularJS promises $q. , :
angular.module('plunker');
.service('myService', function($q, $firebaseRef, $firebaseObject){
var deferred = $q.defer();
this.getUserData = function(el) {
$firebaseObject($firebaseRef.users.child(this.localStorage().uid)).$loaded(function(data) {
deferred.resolve(data);
});
};
return deferred.promise;
});
:
app.controller('MainCtrl', function($scope, myService) {
myService.getUserData()
.then(function(data) {
$scope.uid = data;
console.log($scope.uid);
});
});
, , , .
, postRequest, $scope.uid. , , $scope.uid. , - , , . , - $scope.uid.
, :
<button type="button" ng-click="postRequest(something)" ng-disabled="uid === undefined">Post</button>
, .