多个控制器实例Angular

时间:2015-06-17 18:24:06

标签: javascript angularjs chat

我目前有一个聊天应用程序,可以为每个聊天打开一个新的聊天窗口(就像在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。

0 个答案:

没有答案