2016-11-11 71 views
0

全部:ngKeydown为什么没有反应?

我想要做的是添加一个按键监听器来控制页面上的菜单切换。

<body ng-controller="main" ng-keydown="toggleSideBar($event)"> 

在主控制器:

$scope.sidebarOpen = false; 
$scope.toggleSideBar = function(e){ 
    if(e.keyCode == 18){ // 'ALT' key 
     $scope.sidebarOpen = !$scope.sidebarOpen; 
    } 
} 

在模板:

.sidebar { 
    left:100px; 
    transition: left 0.5s; 
} 
.sidebar.open { 
    left:0px; 
    transition: left 0.5s; 
} 
<div class="sidebar" ng-class="{'open': sidebarOpen}"> 

当我按下ALT键,隔日一次,它可以回应,我不知道是什么发生,有什么帮助?

UPDATE 后来,我发现有什么不对的: 这是一个特定的情况下(当u打ALT)时,Chrome将使用ALT作为快捷键打开或专注于发展其自定义设置按钮:

enter image description here

这就是为什么隔一段时间,我的关键是可以回应。 所以,现在的问题变成:如何绕过这个?

感谢

+0

你使用角的材料? –

+0

@CommercialSuicide不,只是角度。 – Kuan

+0

@CommercialSuicide我有更新我的问题(找到原因),你能帮助吗? – Kuan

回答

0

正常工作对我来说,你有什么browser这里的约束,也可以在更新fiddle

<div ng-app> 
    <h2>Example</h2> 
    <div ng-controller="myController"> 
     <input ng-keydown="keypress($event)"> 
      <p>key: {{lastKey}}</p> 
      <div ng-keydown="keypress($event)"> 
      </div> 
    </div> 
</div> 

JS代码:

function myController($scope) { 
    $scope.lastKey = "---" 

    $scope.keypress = function(e) { 
    if(e.keyCode === 18){ // 'ALT' key 
     //$scope.sidebarOpen = !$scope.sidebarOpen; 
     $scope.lastKey = e.keyCode 
    } 
    }; 

} 

http://jsfiddle.net/7tyf64dp/

+0

谢谢,你可以试试身体标记吗?对于输入来说,它也适用于我的方面。 – Kuan

+0

它的工作.... http://jsfiddle.net/7tyf64dp/2/ – Thalaivar

+0

对不起,它仍然无法在我身边,证明每次它可以响应,我改变你的代码''scope.lastKey = $ scope.lastKey +“”+ e.keyCode'事实证明,每隔一段时间,它可以被触发 – Kuan