我试图用angularfire绑定到基元。以下是我如何做到这一点:
$firebase(fb.child('counts/node')).$on('value', function (obj) {
$scope.nodeCount = obj.snapshot.value
})
这是对的吗?这个API似乎与firebase的其余部分非常不同。我希望得到一个ss作为回调并做ss.val()
,但似乎并非如此。有人可以确认这是不是应该如何,或者我是否做错了。感谢。
答案 0 :(得分:0)
通常,如getting started guide和API中所述,您只需直接在视图中访问数据:
// javascript
$scope.messages = $firebase(new Firebase(URL));
<!-- html -->
<li ng-repeat="message in messages">{{message}}</li>
如果要迭代控制器(坏)或服务(更好)中的数据,可以使用$ 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" />
以上链接涵盖了所有这些内容,在开始使用Angular + 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>