【问题标题】:Adding Firebase Data to Angular Service?将 Firebase 数据添加到 Angular 服务?
【发布时间】:2015-06-23 02:18:06
【问题描述】:

我正在尝试将我的 Firebase 对象注入到服务中,以便我可以使用不同的 Angular 控制器来访问 Firebase 对象的副本。

在我的应用程序以前的工作副本中。我只将 Firebase 加载到控制器中:

以下示例:

  ToDo.controller('todoController',["$scope","$firebaseArray", function($scope, $firebaseArray, ToDoData){ // injecting AngularFire & ToDoData Service 


  var myData = new Firebase("https:firebase url goes here"); //create Firebase obj
  $scope.todos = $firebaseArray(myData); //Reading Database and adding to todos variable 

  $scope.historytodos = [{'title': "Old Task", 'done':true, 'timetag':new Date().toString()}];

  $scope.addTodo = function(){

    var datecreated = new Date().toString();

    $scope.todos.$add({'title':$scope.newtodo,'done':false, 'timetag': datecreated}); //push to Array 

    $scope.newtodo = '';
  };

现在我正在尝试重新创建 Firebase 依赖项,但要使用服务。这是我尝试服务的内容。

这是错误的 Uncaught ReferenceError: Todo is not defined

我的错误服务示例:

Todo.value('fbURL', "https:firebase") //Firebase URL value service
.service('fbRef',function(fbURL){ //Firebase Data Reference Service
  return new Firebase(fbURL);
})
.service('fbArr',function(fbRef){ //Firebase Array service
  $scope.todos = $firebaseArray(fbRef);
  return $scope.todos;
});

不确定是什么导致了错误,也不太确定如何创建一个服务来保存我的 Firebase 对象。

【问题讨论】:

  • 你应该在这里使用 factory() 而不是 service()。您的服务内部没有可用的 $scope(只需使用 var todos = ...; return todos;)。您需要阅读 Angular 教程;一次对付一个巨人;然后回来尝试 AngularFire。

标签: angularjs firebase angularjs-service angularfire


【解决方案1】:

首先,错误是不言自明的,Todo 没有定义。您必须执行以下操作:

var Todo = {fbRef: "https:firebase"};

对于服务,我建议您阅读服务和工厂,以了解最适合您的特定情况的内容,这里有一个简单示例,说明如何在服务中执行此操作:

.service('fb', function(){
  var connection = new Firebase(url);
  var todos = $firebaseArray(connection);

  this.url = function() { return connection;};
  this.todos = function() { return todos;};
});

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多