AngularFire简单的例子冻结了Chrome和Firefox



我正在尝试使用Angular和Firebase实现一个简单的聊天示例。它在Safari上运行良好,但它冻结了Chrome和Firefox(在本地或远程基础上运行(。有没有人知道我的代码出了什么问题?感谢您的任何帮助!

<html ng-app="ZzzzApp">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.3/angular.js"></script>
    <script src="https://www.gstatic.com/firebasejs/3.7.2/firebase.js"></script>
    <script src="https://cdn.firebase.com/libs/angularfire/2.3.0/angularfire.min.js"></script>
    <script type="text/javascript">
        var app = angular.module('ZzzzApp',['firebase']);
        app.controller("ChatController", function($scope, $firebaseArray){  
            var config = {
               apiKey: "AIzaSyA8nk5dSF8HKUSQr_2H04hwTRZ2NWDwSOE",
               authDomain: "chattest-9fe81.firebaseapp.com",
               databaseURL: "https://chattest-9fe81.firebaseio.com",
               storageBucket: "chattest-9fe81.appspot.com",
               messagingSenderId: "353125975278"
            };
            firebase.initializeApp(config);
            var ref = firebase.database().ref().child('12345');
            $scope.messages = $firebaseArray(ref);
            $scope.addMessage = function(){
                $scope.messages.$add({direction: 'S', message: $scope.messageToSend});
                $scope.messageToSend = '';
            };   
        });
    </script>
</head>
<body>
    <div ng-controller="ChatController">    
        <div ng-repeat="message in messages">
            <p>{{message.message}}</p>
        </div>      
        <input type="text" class="form-control" ng-model='messageToSend'>
        <button type="button" class="btn btn-default" ng-click='addMessage()'>Send</button>
    </div>      
</body>

这似乎是Firebase ^3.7.1中的一个错误。有同样的问题,遇到了另一个答案。尝试指定 Firebase 版本:

dependencies: { "firebase": "3.7.0", "angularfire": "^2.3.0" ... }

不确定出了什么问题 - 您的数据是如何构建的?

尝试像这样更改 addMessage 函数:

$scope.addMessage = function(){
    $scope.messages.$add({direction: 'S', message: $scope.messageToSend})
    .then(() => $scope.messageToSend = '')
}; 

只是为了确保您只清空消息ToSend,在它成功添加到Firebase数组之后。控制台中有任何输出吗?

最新更新