【问题标题】:$firebaseArray injector issue$firebaseArray 注入器问题
【发布时间】:2017-02-04 03:42:17
【问题描述】:

我正在使用 Angular 和 Firebase,但在控制器中注入 $firebaseArray 时遇到问题。代码如下:

myApp.controller("MeetingsController",
    ['$scope','$rootScope','$firebaseArray',
    function($scope,$firebaseArray,$rootScope){

    var ref = firebase.database().ref();
     var auth = firebase.auth();

        auth.onAuthStateChanged(function(user) {
          if (user) {
            var data = firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings');
            var meetingsInfo=$firebaseArray(data);

            $scope.addmeeting=function(){
                meetingsInfo.$add({
                    name:$scope.meetingname,
                    date:firebase.ServerValue.TIMESTAMP
                }).then(function(){
                    $scope.meetingname=' ';
                })
            };
          }
        });

}]);

堆栈跟踪附在下面:

Error: [$injector:unpr] http://errors.angularjs.org/1.5.6/$injector/unpr?p0=%24firebaseArrayProvider%20%3C-%20%24firebaseArray%20%3C-%20MeetingsController
O/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:6:412
db/n.$injector<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:43:84
d@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:40:344
db/U<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:43:144
d@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:40:344
e@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:41:78
h/<.instantiate@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:41:445
ff/this.$get</<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:90:1
A/<.link@file:///E:/Ex_Files_AngularJS_DataDriven/Ex_Files_AngularJS_DataDriven/Exercise%20Files/ch01/01_02/angulardata/js/lib/angular/angular-route.min.js:7:268
bb/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:16:228
ia@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:81:35
n@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:66:176
g@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:58:429
aa/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:58:67
ac/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:62:428
d@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:59:422
l@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:63:447
x@file:///E:/Ex_Files_AngularJS_DataDriven/Ex_Files_AngularJS_DataDriven/Exercise%20Files/ch01/01_02/angulardata/js/lib/angular/angular-route.min.js:6:364
uf/this.$get</m.prototype.$broadcast@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:147:483
m/<@file:///E:/Ex_Files_AngularJS_DataDriven/Ex_Files_AngularJS_DataDriven/Exercise%20Files/ch01/01_02/angulardata/js/lib/angular/angular-route.min.js:11:408
e/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:130:409
uf/this.$get</m.prototype.$eval@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:145:103
uf/this.$get</m.prototype.$digest@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:142:165
uf/this.$get</m.prototype.$apply@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:145:399
l@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:97:248
D@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:101:373
fg/</w.onload@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:102:397
<main class="cf ng-scope" ng-view="">

我正在关注当前版本的 Firebase。我做错了吗?

【问题讨论】:

  • 您是否确保将 firebase 注入到您的模块中,例如 var app = angular.module("sampleApp", ["firebase"]);
  • @MattyM 谢谢马蒂。解决了这个问题。我还有一个问题。在当前版本的 firebase 中,firebase.ServerValue.TIMESTAMP 的等价物是什么?

标签: angularjs firebase firebase-realtime-database angularfire


【解决方案1】:

顺序不对,改成这样,

myApp.controller("MeetingsController",'$scope','$rootScope','$firebaseArray',
    function($scope,$rootScope,$firebaseArray){  

}

还要确保您已将“firebase”作为模块的依赖项注入,

var app = angular.module("sampleApp", ["firebase"]);

DEMO APP

【讨论】:

  • 是的,在您回答后我确实纠正了它。但仍然没有改变错误。我不认为我在这里遗漏了任何东西。我是吗? @sajeetharan
  • @AakashThakur 因为我做了更改,有多余的逗号,请查看此示例小提琴jsfiddle.net/sajeetharan/b7fkpj1o
  • 这是我当前的控制器:myApp.controller("MeetingsController", ['$scope','$rootScope','$firebaseArray', function($scope,$rootScope,$firebaseArray)
  • 非常感谢 sajee 的回复。之前没有在我的模块中包含 firebase 作为依赖项。现在可以正常工作。 @sajeetharan
猜你喜欢
  • 2011-07-07
  • 2015-07-12
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多