我使用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>
我能找到慈善的灵魂来帮助我吗?
答案 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;