为什么无法从控制器访问 Firebase 对象的 $value?

Why isn't it possible to access $value of a Firebase object from a controller?

我的应用程序中有一个函数 returns 用户的名字作为 Firebase 对象:

function getFirstName(uid) {
    var userNameRef = Ref.child('users/' + uid + '/firstName');;
    return $firebaseObject(userNameRef);
}

为什么我只能从 HTML 视图访问 $value,而不能从这样的控制器访问:

var firstName = getFirstName(uid);
$scope.firstName = firstName.$value;

您可以在控制器中访问它,但它是异步加载的,因此您必须使用承诺。仅当您绝对需要控制器中的值时才应这样做。

getFirstName(uid).$loaded().then(function(firstName) {
  console.log(firstName.$value);
});