2015-06-27 119 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

相關問題