1
我使用了一個教程來創建一個angularfire聊天應用程序。它是一個獨立的應用程序,使用ui路由器。我成功地將它作爲一個視圖集成在我的應用程序中,但這不切實際。我需要能夠在任何視圖上使用聊天。我被困在將解析功能移到控制器上。我已經閱讀了一些文檔,我相信它正在返回一個我需要在控制器中解決的承諾。這個教程的鏈接就在這裏。 tutorial如何使用angularfire檢索id的數據
這裏是我試圖從
.state('channels.direct', {
url: '/{uid}/messages/direct',
templateUrl: 'views/chat/_message.html',
controller: 'MessageController',
controllerAs: 'messageCtrl',
resolve: {
messages: function ($stateParams, MessageService, profile) {
return MessageService.forUsers($stateParams.uid, profile.$id).$loaded();
},
channelName: function ($stateParams, UserService) {
return UserService.all.$loaded().then(function() {
return '@' + UserService.getDisplayName($stateParams.uid);
});
}
}
})
脫身消息服務
var channelMessagesRef = new Firebase(AppConstant.FirebaseUrl + 'channelMessages');
var userMessagesRef = new Firebase(AppConstant.FirebaseUrl + 'userMessages')
return {
forChannel: function (channelId) {
return $firebaseArray(channelMessagesRef.child(channelId));
},
forUsers: function (uid1, uid2) {
var path = uid1 < uid2 ? uid1 + '/' + uid2 : uid2 + '/' + uid1;
return $firebaseArray(userMessagesRef.child(path));
}
};
用戶服務
var usersRef = new Firebase(AppConstant.FirebaseUrl + 'users');
var connectedRef = new Firebase(AppConstant.FirebaseUrl + '.info/connected');
var users = $firebaseArray(usersRef);
return {
setOnline: function (uid) {
var connected = $firebaseObject(connectedRef);
var online = $firebaseArray(usersRef.child(uid + '/online'));
connected.$watch(function() {
if (connected.$value === true) {
online.$add(true).then(function (connectedRef) {
connectedRef.onDisconnect().remove();
});
}
});
},
getGravatar: function (uid) {
return '//www.gravatar.com/avatar/' + users.$getRecord(uid).emailHash;
},
getProfile: function (uid) {
return $firebaseObject(usersRef.child(uid));
},
getDisplayName: function (uid) {
return users.$getRecord(uid).displayName;
},
all: users
};
這裏的UI路由器就是我到目前爲止在控制器
$scope.directMessage = function (uid) {
UserService.all.$loaded().then(function() {
$scope.selectedChatUser = '@' + UserService.getDisplayName(uid);
});
$scope.selectedChatUserMessages = MessageService.forUsers(uid, profile.$id).$loaded();
};
我返回
$ scope.selectedChatUser
罰款。這個問題是與信息服務
這是什麼,我目前從消息服務
$$state: Object
__proto__: Promise
返回我如何解決這個問題?