2015-06-27 121 views
1

我用液碱中和AngularFire为使聊天,但我有问题“$添加”:以下错误AngularFire - 类型错误:无法读取属性未定义

TypeError: Cannot read property '$add' of undefined at Scope.$scope.sendChat (controllers.js:12)

阻止我的工作来推进。我不明白我在哪里可以找到解决方案。

这是我在controller.JS代码:

angular.module('starter.controllers', ['firebase']) 

.factory("Chats", function($firebaseArray) { 
    var itemsRef = new Firebase("https://<MYFIREBASE>.firebaseio.com/chats"); 
    return $firebaseArray(chatsRef); 
}) 

.controller('ChatsCtrl', ['$scope', '$rootScope', 
    function($scope, Chats, $rootScope) { 

    $scope.sendChat = function(chat) { 
     $scope.chats.$add({ 
     user: 'guest', 
     message: chat.message 

     }); 

     chat.message = ""; 

    }; 

}]) 

这是我的代码在HTML:

<ion-view view-title="Chats"> 
    <ion-content> 
    <div class="list"> 
     <a class="item item-avatar"> 
     <img> 
     <h2>{{ chat.user }}</h2> 
     <p>{{ data.text }}</p> 
     </a> 
    </div> 
    <form> 
     <div class="list"> 
     <div class="item item-input-inset"> 
      <label class="item-input-wrapper"> 
      <input type="text" placeholder="Message" ng-model="chat.message"> 
      </label> 
      <button class="button button-assertive ion ion-ios-chatbubble" ng-click="sendChat(chat)"></button> 
     </div> 
     </div> 
    </form> 
    </ion-content> 
</ion-view> 

我能找到一个好心人帮助我吗?

回答

0

最明显的问题是您需要引用Controller中的$ firebaseArray或$ firebaseObject模块以使用AngularFire方法。

.controller('ChatsCtrl', ['$scope', '$rootScope', '$firebaseArray', function($scope, Chats, $rootScope, $firebaseArray) { 

但如果这是像你需要与你的业务数据

$scope.chats = Chats; 
+0

谢谢, 我已经使用您的解决方案,但我现在有另一个错误:“TypeError:$ scope.chats。$ add不是一个函数在Scope。$ scope.sendChat(controllers.js:13)” 想法? – PositivProd

+0

这可能是一个好主意,设置一个Plunkr或JSFiddle协作您的问题,它有点难以根据错误消息调试JS代码 – sjm

2

试试这个填充$ scope.chats对象,你完全控制代码那里有其他问题,

angular.module('starter.controllers', ['firebase']) 
    .factory("Chats", function($firebaseArray) { 
     var itemsRef = new Firebase("https://<MYFIREBASE>.firebaseio.com/chats"); 
     return $firebaseArray(itemsRef); 
    }) 
    .controller('ChatsCtrl', ['$scope', '$rootScope', 'Chats', '$firebaseArray', 
     function($scope, $rootScope, Chats, $firebaseArray) { 
      $scope.chats = Chats; 
      $scope.sendChat = function(chat) { 
       $scope.chats.$add({ 
        user: 'guest', 
        message: chat.message 

       }); 

       chat.message = ""; 

      }; 

     } 
    ]);   

您不应该在聊天服务中返回$firebaseArray(itemsRef)而不是$firebaseArray(chatsRef)?一个错字?

注入,Chats服务,$firebaseArray在控制器中。

希望这会有所帮助!

+0

谢谢,但我有另一个错误:未捕获SyntaxError:意外的标记功能controller.js: 9 没关系,我在另一个项目中工作......谢谢你们所有的人! – PositivProd

相关问题