我目前有一个聊天应用程序,可以为每个聊天打开一个新的聊天窗口(就像在facebook& co上一样)。为了使这个工作到目前为止我做了一些奇怪的黑客,因为所有n个打开的聊天窗口使用相同的$ scope变量。这既不是好的编程,也不会有助于稍后进行错误修正。
因此,我想重新设计应用程序的聊天部分,并为每个Chatwindow使用一个MessageCtrl
实例。这是否可以在angular.js中使用,如果可以,我该如何实现呢?
如果没有,你能否给我一些如何实施“角度方式”的指导?
编辑:我目前正在做的事情:
我从MessageCtrl
创建了Chatwindow,并将必要的数据保存到MessageService
。自从下次用户在其中一个Chatwindows中写入消息时,我不知道$ scope变量是否设置正确,我再次检查MessageService
以找到正确的聊天。
目前,问题是通过在聊天窗口的父<div id=<chatId>
中保存聊天ID来了解正确聊天的唯一方法。这远远不是好的,但到目前为止我唯一的解决方案
edit2:我的代码:
当用户启动新聊天时,会在某些Ctrl中发生以下情况:
`$rootScope.newChat = {roomId: roomId};
MessageCtrl
听取了这个:
$rootScope.$watch('newChat', function (newVal, oldVal) {
startChatWindow();
// other preperation like setting $scope.roomId
}
startChatWindow()
只需添加以下html:
var $el = "<div id='" + $scope.roomId + "'class='bottomChat'>";
<!-- other things, like displaying the old messages -->
</div>";
$("#messageTab").append($compile($el)($scope));
PS:聊天窗口我只是一个视觉上出现的窗口,实际上它只是一个风格的窗口。这也意味着每个聊天窗口都使用相同的messageCtrl。这也意味着我没有参考例如$scope.roomId
编辑3:解决方案
删除jQuery代码并创建指令后,每个chatWindow都有自己的Ctrl。