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

时间:2015-12-17 09:32:49

标签: javascript angularjs firebase angularfire

Firebase structure

我有存放在firebase数据库中的待办事项,如何使用angularjs在json数组中同时获取所有待办事项。所以我可以写这样的东西。



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

或者存储待办事项的结构是否错误?

2 个答案:

答案 0 :(得分:1)

您的数据结构中不需要额外的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');
}

答案 1 :(得分:0)

要做到这一点,首先需要安装 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();