我正在创建一个firebase博客应用程序.我在TypeError: $firebaseArray is not a function
我的控制器中遇到问题,我在应用程序的整个范围内一直使用$ firebaseArray.我不知道我是怎么打破它的.我可以告诉你控制器的代码.
app.controller('postController',["$scope", "$location","$routeParams","Blog","FBURL","Auth","authDataSrvc", "$firebaseObject", "$firebaseArray","FilePicker", "$window", function($scope,$location,$routeParams,Blog,FBURL,$firebaseArray,$firebaseObject,FilePicker,$window,Auth,authDataSrvc){ $scope.posts = Blog.allPosts; //All blog posts var postId = $routeParams.postId; if(postId){ $scope.selectedPost = getPost(postId); // gets unique object based on its id with get post function } function getPost(postId){ var ref = new Firebase(FBURL + "/" + postId); return $firebaseArray(ref); } $scope.addPost = function(newpost){ Blog.addPost($scope.newpost); $location.path('/'); //redirects to home page console.log(newpost); console.log($scope.posts); // all posts $scope.newpost ={}; //reset the message }; $scope.currentPost = function(postId){ Blog.getPost(postId); console.log(postId); }; $scope.editPost = function(post){ $scope.selectedPost.$save(post); $location.path('/'); }; $scope.files = []; $scope.pickFile = function(){ FilePicker.pickMultiple( { mimetype: 'image/*', maxFiles: 4 }, $scope.onSuccess ); }; $scope.onSuccess = function(Blobs,newpost){ $scope.files.push(Blobs); //push to filepicker var imageURLs = []; //new image urls array Blobs.forEach(function(file){ imageURLs.push(file.url); //inserts Blob.urls to imageURLs array }); $scope.newpost['photo'] = imageURLs; //adds photo urls array to newpost.photo which stores to firebase 'newpost object' console.log(Blobs.url); $window.localStorage.setItem('files', JSON.stringify(Blobs.url)); };
//评论部分
/* { }*/ $scope.createComment = function(post, message){ var profilePic; var profileName; /* Check to see social media provider before pushing that information */ if($scope.authData.provider === 'facebook'){ profilePic = $scope.authData.facebook.profileImageURL; profileName = $scope.authData.facebook.displayName; } else if($scope.authData.provider === 'google'){ profilePic = $scope.authData.google.profileImageURL; profileName = $scope.authData.google.displayName; } //console.log(profilePic,profileName); var ref = new Firebase(FBURL + "/" + postId + "/comments/"); var fireCommentArray = $firebaseArray(ref); return fireCommentArray.$set( { text: $scope.message.text, pic: $scope.profilePic, name: $scope.profileName } ), $scope.message = ''; }; $scope.removeComment = function(post, message) { var commentForDeletion = new Firebase(FBURL + "/" + postId + "/comments/" + message.$id); commentForDeletion.$remove(); };
现在它在getPost函数,$ scope.addCommentFunction上出错,它们都使用$ firebaseArray.$ add()调用.
我的应用程序确实有分离的服务和指令,但一切似乎都完好无损.
您的$firebaseArray
对象将作为第9个参数注入,但该变量$firebaseArray
是第6个参数.
试试这个:
app.controller('postController', [ "$scope", "$location", "$routeParams", "Blog", "FBURL", "Auth", "authDataSrvc", "$firebaseObject", "$firebaseArray", "FilePicker", "$window", function( $scope, $location, $routeParams, Blog, FBURL, Auth, authDataSrvc, $firebaseObject, $firebaseArray, FilePicker, $window ){
... ["$scope", "$location", "$routeParams", "Blog"...
如果不通过压缩器或混淆器破坏变量名,则完全删除.