2016-11-11 80 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