我有一个返回firebase引用的AngularJS服务。
.factory('sessionManager', ['$firebase','$scope', function($firebase){
var ref=new Firebase('https://telechat.firebaseio.com/sessions');
return $firebase(ref);
}])
在控制器中,我添加了依赖项并调用了$bind
。
$scope.items=sessionManager;
$scope.items.$bind($scope,'sessions').then(function(unbind){
unbind();
});
但是当我将它打印到控制台时,除了数据数组之外,返回的数据还包含$add
,$set
,...等函数的集合。
为什么会这样?我这样做是错误的吗?
答案 0 :(得分:0)
如果我正确地阅读了这个问题,你可能会认为$ bind()是$ firebase对象到原始数据数组或对象的转换。实质上,$ firebase实例和$ bind之间的唯一区别是数据本地更改会自动从Angular推送回Firebase。然而,当你使用没有$ bind的$ firebase时,你需要调用$ save来推送本地更改。
请记住,$ firebase是Firebase API的包装器而不是简单的数据数组,在大多数情况下,您仍然可以将其视为原始数据。
要在Firebase对象中迭代数据,可以使用ngRepeat:
<li ng-repeat="(key, item) in $sessions">{{item|json}}</li>
或者,如果您想应用依赖于数组的过滤器:
<li ng-repeat="(key, item) in $sessions | orderByPriority | filter:searchText">
或者在使用$ getIndex:
的控制器中angular.forEach($scope.sessions.$getIndex(), function(key) {
console.log(key, $scope.sessions[key]);
});
$ add / $ update / etc方法是$firebase object's API的一部分。 documentation和tutorial应该是了解此过程的绝佳引物。
这也是API的一部分,它继续发展以更好地匹配Angular的做事方式和来自用户的反馈。