我试着用天使之火绑在原始的东西上。我就是这样做的:
$firebase(fb.child('counts/node')).$on('value', function (obj) {
$scope.nodeCount = obj.snapshot.value
})
这是正确的吗?这个API似乎与其他的firebase非常不同。我希望得到一个ss作为回调,并做ss.val()
,但情况似乎并非如此。有人能证实这是应该的还是我做错了。谢谢。
发布于 2014-04-28 10:50:30
通常,如入门指南和API接口所述,您应该直接访问视图中的数据:
// javascript
$scope.messages = $firebase(new Firebase(URL));
<!-- html -->
<li ng-repeat="message in messages">{{message}}</li>
如果您想在控制器(bad)或服务(更好)中迭代数据,可以使用$getIndex()将顺序中的键读取为数据库。
// javascript
var ref = $firebase(new Firebase(URL));
ref.$on('loaded', function() {
angular.forEach(ref.$getIndex(), function(key) {
console.log('the next message is', key, ref[key]);
});
});
实际上,如果您试图同步单个原语值,则几乎没有必要使用angularFire:
$scope.primitive = null;
var ref = new Firebase(URL);
ref.on('value', function(snap) { $scope.primitive = snap.val(); });
$scope.saveValue = function(newValue) {
ref.set(newValue);
};
但当然有可能:
// javascript
$scope.primitive = $firebase(new Firebase(URL));
<!-- html -->
<input ng-model="primitive.$value" />
所有这些都包含在上面的链接中,在开始使用角+ Firebase之前,应该将其视为必需的读取。
0.8的变化
angularFire 0.8很快就会上市。它将使用$asArray()、$asObject()并提供一个.then()方法,稍微改变这个结构,所以更像这样:
// javascript
var ref = $firebase(new Firebase(URL));
$scope.messages = ref.$asArray();
$scope.ref.then(function() {
angular.forEach($scope.messages, function(message) {
console.log('the next message is', message.$id);
});
});
<!-- html -->
<li ng-repeat="message in messages">{{message}}</li>
https://stackoverflow.com/questions/23339933
复制相似问题