AngularFire $add - TypeError: undefined не является функцией
Когда я пытаюсь заменить $add на push, я получаю эту ошибку.
TypeError: undefined is not a function
at Scope.$scope.sendComment (http://localhost:9000/scripts/controllers/post.js:22:38)
at http://localhost:9000/bower_components/angular/angular.js:10847:21
...
Вот мой контроллер @ post.js
16 $scope.sendComment = function () {
17 var newComment = {
18 user: $scope.currentUser,
19 text: $scope.currentText
20
21 };
22 var promise = CommentService.add(newComment);
23 promise.then(function(name) {
24 console.log(name);
25 });
26 };
Вот мой сервис (проблематичная функция добавления внизу)
(function(angular) {
'use strict';
angular.module('codesApp').service('CommentService', function(FBURL, $q, $firebase) {
var commentRef = new Firebase(FBURL).child('comments');
var fireComment = $firebase(commentRef);
return {
childAdded: function childAdded(limitNumber, cb) {
commentRef.startAt().limit(limitNumber).on('child_added', function(snapshot) {
var val = snapshot.val();
cb.call(this, {
user: val.user,
text: val.text,
name: snapshot.name()
});
});
},
add: function addComment(comment) {
return fireComment.$add(comment);
},
....
Я застрял на этом всю ночь. Любая помощь очень ценится! Спасибо!
1 ответ
$firebase(commentRef) возвращает вас только на половину пути к массиву firebase, который может вызывать $add().
Вы должны дополнительно вызвать $asArray() для возвращаемого значения $firebase(commentRef) следующим образом:
var fireCommentArray = $firebase(commentRef).$asArray();
Тогда ты можешь
fireCommentArray.$add(comment)