Angularjs 什么是角火';美元价值?

Angularjs 什么是角火';美元价值?,angularjs,firebase,angularfire,Angularjs,Firebase,Angularfire,我只是想用angularjs和angularfire从我的firebase中获取一个值…有问题 在我的控制器内: $scope.componentStatus = syncData("components/-JI_JgHxm0TEUEVjADJn/status"); console.log($scope.componentStatus); 这将返回一个对象,其中包含$value 但是,当我尝试时: console.log($scope.componentStatus.$value); 结果是

我只是想用angularjs和angularfire从我的firebase中获取一个值…有问题

在我的控制器内:

$scope.componentStatus = syncData("components/-JI_JgHxm0TEUEVjADJn/status");
console.log($scope.componentStatus);
这将返回一个对象,其中包含
$value

但是,当我尝试时:

console.log($scope.componentStatus.$value);
结果是
未定义

有什么建议吗?我觉得这应该是一个简单的任务,所以我错过了一些东西

使用的版本

Angularjs-1.2.7
角火-0.6.0

数据结构

components : {
    "-JI_dFtOxE5k1ZFeZu8a" : {
      "experience" : "-JJ8jT0oJA3vYOeBNpq5",
      "name" : "Name of Component",
      "status" : "-JJ8hQcUb0_ip9Hoqcqq",
      "theme" : "-JJ8mD9tEsBw3a3g9Wz6"
    },
}

这是对异步进程的简单误解。在调用
$value
时,尚未从服务器获取数据

尝试在$on('loaded',…)回调中调用此函数:

$scope.componentStatus = syncData("components/-JI_JgHxm0TEUEVjADJn/status");
$scope.componentStatus.$on('loaded', function() {
    console.log($scope.componentStatus.$value);
});
请注意,如果您实际要做的是在DOM中显示此内容,则无需担心数据何时到达——Firebase和Angular将自行解决此问题:

<div>When it arrives, it will appear here: {{componentStatus.$value}}</div>

$value
在《参考指南》中关于构造函数的章节中提到。@Mikke这些文档很好,但它没有解释为什么我们会得到
未定义的结果。$value只为原语定义。身份是原始的吗?$firebase对象本身包含任何子记录(如果是对象)的键。我们需要更多关于版本、数据结构和代码的信息来重现/验证这一点,并真正理解这个问题。@Kato,谢谢你的回答。我用更多的信息更新了这个问题。谢谢你帮我。谢谢你,加藤。确实是这样。在我的用例中,我不需要只显示值,而是需要将其放入函数中以返回另一个值。不管怎样,我的问题是异步概念。干杯在这种情况下,可能没有理由将其分配给范围变量。您可以使用类似var componentStatus()的内容在本地引用它。还更新了0.8.0的答案
var data = syncData("components/-JI_JgHxm0TEUEVjADJn/status").then(function() {
    console.log(data.$value);
});