如何从 firebase 获取所有待办事项?

How to get all todos from firebase?

我将待办事项存储在 firebase 数据库中,我怎样才能在 json 数组中一次获取所有待办事项,使用 angularjs。所以我可以写这样的东西。

<p ng-repeat="todo in todos">
  {{todo.title}}
</p>

还是存储todos的结构不对?

为此,首先您需要安装 AngularFire 并在您的 index.html

中添加依赖项

然后,您需要在服务中添加对数据库的引用:

   factory('ToDosManager', ['$firebase', function ($firebase) {

      var ref = new Firebase("https://example123456789.firebaseio.com/");

      return {
        all: function() {
          return $firebase(ref).$asArray();
        },
        get: function(toDoId) {

          return otherTodo[toDoId];
        }
      }
    }])

然后从你的控制器调用你的服务

    $scope.getTodos = function(){
$scope.todos = ToDosManager.all();

您的数据结构中不需要额外的 todo 键。试试这样的结构:

{
  "todos": {
    "larohj5wj4qj_34qk": {
       "title": "Do homework",
       "checked": true
    },
    "utpAbn_48q5jrfKFf": {
       "title": "Walk dog",
       "checked": false
    }
  }
}

然后使用AngularFire来同步这个集合:code format done with Angular styleguide

Plnkr Demo

angular.module('todoApp', ['firebase'])
  .constant('FirebaseUrl', '<my-firebase-app>')
  .service('rootRef', ['FirebaseUrl', Firebase])
  .controller('TodoCtrl', TodoController);

function TodoController($scope, rootRef, $firebaseArray) {
  $scope.todos = $firebaseArray(rootRef.child('todos');
}