我正在使用AngularUI keypress指令,但它給我帶來了問題。我能夠創建一個文本字段並附加一個按鍵事件(基本上它就是AngularUI頁面的演示內容)。使用AngularUI獲取熱鍵
<textarea ui-keypress="{13:'keypressCallback($event)'}">
我想我的網頁上註冊的按鈕熱鍵,當我附上相同的用戶界面,按鍵事件的按鈕(或頁面的主體爲此事),它不工作。我怎樣才能讓我的熱鍵工作?
我正在使用AngularUI keypress指令,但它給我帶來了問題。我能夠創建一個文本字段並附加一個按鍵事件(基本上它就是AngularUI頁面的演示內容)。使用AngularUI獲取熱鍵
<textarea ui-keypress="{13:'keypressCallback($event)'}">
我想我的網頁上註冊的按鈕熱鍵,當我附上相同的用戶界面,按鍵事件的按鈕(或頁面的主體爲此事),它不工作。我怎樣才能讓我的熱鍵工作?
建立你的。 我做的方式是創建2個指令一個用於按鍵,一個用於按鍵
創建模塊(我稱之爲yourapp)後,您將創建您的指令。
yourapp.directive('keyPress', function() {
return function (scope, elm, attrs) {
elm.bind('keypress', function (e) {
var intKey = (window.Event) ? e.which : e.keyCode;
if (intKey === attrs.key) {
if (scope.theater === 1) {
scope.$apply(attrs.keyPress);
}
}
});
};
});
yourapp.directive('keyUp', function() {
return function (scope, elm, attrs) {
elm.bind('keyup', function (e) {
var intKey = (window.Event) ? e.which : e.keyCode;
if (intKey === attrs.key) {
if (scope.theater === 1) {
scope.$apply(attrs.keyUp);
}
}
});
};
});
這樣你就可以以這種方式使用它:
<div key-press="doSomething()" key="13"> // enter
<div key-up="doSomething()" key="27"> // esc
注意:這(window.Event) ? e.which : e.keyCode;
將使其跨瀏覽器。
嘗試keyup或keydown,有些鍵不能用於按鍵(ui-keyup,ui-keydown也存在)。
這也開始工作。我做了keydown,它的工作。如果我可以接受兩個答案,但是我已經定製了其他答案以符合我的需要,而不是使用AngularUI。謝謝! – Spencer
沒問題,很高興你有一些工作:-)。 順便說一句,如果你想要一個輕量級的angular-ui,你可以在http://angular-ui.github.com上用'創建一個構建'按鈕下載一個只有ui-key *指令的自定義構建/(按鍵模塊包含keydown,keyup和keypress) –
那麼alt + j怎麼樣呢? 'e'(事件)中的「alt pressed」指示符? – Spencer
對AngularUI不瞭解。我會使用'
這是一個單一熱鍵的好方案,但不是我想要的東西(即能夠使用'alt-j '或'ctrl-p'或其他)。我已經爲我的需求擴展了這個解決方案。 – Spencer