我只是想用angularjs和angularfire从我的firebase中得到一个值…有问题。
Inside my controller:
$scope.componentStatus = syncData("components/-JI_JgHxm0TEUEVjADJn/status");
console.log($scope.componentStatus);
返回一个包含$value
的对象。
但是,当我尝试:
console.log($scope.componentStatus.$value);
我得到Undefined
作为结果
指针吗?我觉得这应该是一个简单的任务,所以我只是错过了一些东西。
版本使用
https://cdn.firebase.com/v0/firebase.js
Angularjs - 1.2.7
Angularfire 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>
下面是演示这些概念的小提琴:http://jsfiddle.net/katowulf/e7WFf/
和另一个显示相同的想法与$bind:http://jsfiddle.net/katowulf/4J356/
从angularFire 0.8.0开始,您还可以将$firebase
对象视为类似于以下内容的承诺:
var data = syncData("components/-JI_JgHxm0TEUEVjADJn/status").then(function() {
console.log(data.$value);
});