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

标签 angularjs firebase angularfire

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

我使用用户名访问 Firebase 内的引用 url,我得到一个返回的对象。如果我想访问单个属性,我会得到未定义的值,但是如果我在我的 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
};

}]);

最佳答案

Firebase 值是异步加载的。当 $scope.returnedObj 触发时,该值尚未加载到 alert 中。

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

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

该值显示在模板中是因为 Angular 会监视所有 $scope 变量的变化。当该值被加载时(几毫秒后),它会立即显示出来。

关于angularjs - 无法访问 Firebase 对象属性。值显示为未定义的 ANGULARFIRE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25450325/

相关文章:

javascript - Firebase 排序和检索特定记录的索引

javascript - 在加载指令模板之前指令的范围未初始化,导致无法加载 Google map

html - 如何在ionic中设置左侧的后退按钮

firebase - 使用 Firebase signInWithRedirect 是否可以将其配置为将我重定向回特定页面

firebase - 如何在flutter [firebase]中获取文档快照?

java - 如何检索 Firebase 集合中的最后一个文档。我还想获取文档字段值

javascript - AngularFire 0.5.0 $on 'change' 事件未正确触发

javascript - 如何禁用类型 'number' 的特定输入元素的步骤属性的验证?

javascript - Angular 计时器 - .stop() 和 .resume() 问题

firebase - 如何取消订阅 AngularFire db 观察/订阅?