有以下情况:
我在AngularJS应用程序中实现了一个带有指令和控制器的聊天模块。这用于大厅和游戏本身。
在指令的link()
函数的某处,我使用以下代码接受输入击键作为输入触发器。
$('#msgInput').keypress((e) => {
if( e.keyCode == 13 ) // Enter
{
var chatMsg = {
message : $('#msgInput').val()
};
$('#msgInput').val('');
scope.chatModel.sendMessage(chatMsg);
}
e.stopPropagation();
});
最初当页面第一次加载时一切正常 - 我导航到大厅,事件处理程序被注册,每次输入都会执行回调。
这一直有效,直到我决定导航到游戏菜单。
指令的链接函数再次被触发并注册与以前相同的事件处理程序。
从这一点开始,事件处理程序不再处理任何keypress()
到输入框。
只要我在大厅或游戏中重新加载页面(f5) - 一切都恢复正常并正常工作,当我导航回另一个菜单(大厅或菜单)时再次停止。
编辑:当我导航回我来自的菜单时,按键()也停止了此菜单的工作(现在用于大厅和游戏) 。只有重新加载才有帮助。
我错过了什么?事件处理程序显然已注册,但在任一菜单中的初始导航后都没有触发。