AngularFire - TypeError:无法读取属性' $ add'未定义的

时间:2015-06-27 05:55:52

标签: javascript angularjs firebase ionic-framework angularfire

我使用Ionic和AngularFire进行聊天,但我遇到了问题:以下错误

  

TypeError:无法读取属性' $ add'在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>

我能找到慈善的灵魂来帮助我吗?

2 个答案:

答案 0 :(得分:2)

试试这个,

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在控制器中。

希望这有帮助!

答案 1 :(得分:0)

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

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

但如果这是你完成控制器代码还有其他问题,比如你需要用你的服务数据填充$ scope.chats对象

$scope.chats = Chats;