无法访问Firebase对象属性。值显示为未定义的ANGULARFIRE

时间:2014-08-22 15:14:03

标签: angularjs firebase angularfire

我想为我的演示做一个自定义登录,但我遇到了一个问题。

我使用用户名访问Firebase中的引用网址,我得到了一个返回的对象。如果我想访问单个属性,我会得到未定义的值,但如果我添加了我的html {{returnedObj.name}},则会显示该值。

为什么?

angular.module('Demo').controller('loginCtrl', ['$scope', '$firebase', '$location',    function($scope, $firebase, $location){
$scope.user = {};
$scope.check = function(){
    console.log('https://fabritzio-demo.firebaseio.com/users/' + $scope.user.name);
    $scope.returnedObj = $firebase(new Firebase('https://fabritzio-demo.firebaseio.com/usuarios/' + $scope.user.name)).$asObject();
    alert($scope.returnedObj.name); // returns undefined value
};

}]);

1 个答案:

答案 0 :(得分:12)

Firebase值以异步方式加载。当$scope.returnedObj触发时,该值尚未加载到alert

有几种方法可以处理从Firebase异步加载的值,例如使用$loaded来获取承诺:

$scope.returnedObj.$loaded().then(function () {
  alert($scope.returnedObj.name);
});

该值显示在模板中,因为Angular会监视所有$scope变量以进行更改。加载值(毫秒后)后,会立即显示。