Angular UI Router - 基于Keydown的chnage状态

时间:2015-12-16 17:05:12

标签: angularjs angular-ui-router

我希望根据按键更改状态 - 即M键加载菜单,G键加载指南 - 它们是完全独立的视图。

我正在做一个假设,我可以做一个全局指令

$document.on 'keydown', ( event ) ->
    if event.keyCode == 77
        $state.go 'mainMenu'

然而,当视图被破坏时,它仍在回答这些按键,我想有效地阻止它

在处理视图的指令中

我有

scope.$on '$destroy', ->
    $document.off( 'keydown' )

然而,这将阻止全局指令

发布所有密钥

基本上在整个多状态应用程序中处理键导航的任何帮助

非常感谢

1 个答案:

答案 0 :(得分:2)

$on实际上会返回事件侦听器驱逐舰功能(或$off,如果你愿意的话),所以我相信

var unsubscribeKeyDown = $document.on 'keydown', ( event ) ->
    if event.keyCode == 77
        $state.go 'mainMenu'

scope.$on '$destroy', ->
    unsubscribeKeyDown();

应该这样做。

查看this answer