3 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果要調(diào)用不帶格式的函數(shù),可以使用我的ngEnter指令:
Javascript:
angular.module('yourModuleName').directive('ngEnter', function() {
return function(scope, element, attrs) {
element.bind("keydown keypress", function(event) {
if(event.which === 13) {
scope.$apply(function(){
scope.$eval(attrs.ngEnter, {'event': event});
});
event.preventDefault();
}
});
};
});
HTML:
<div ng-app="" ng-controller="MainCtrl">
<input type="text" ng-enter="doSomething()">
</div>
我在自己的Twitter和Gist帳戶上提交了其他很棒的指令。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
我想要的東西多一點(diǎn)擴(kuò)展/大于給定答案的語(yǔ)義,所以我寫(xiě)了一個(gè)指令,需要一個(gè)JavaScript對(duì)象以類似的方式內(nèi)置ngClass:
的HTML
<input key-bind="{ enter: 'go()', esc: 'clear()' }" type="text"></input>
在指令范圍內(nèi)評(píng)估對(duì)象的值-確保將其用單引號(hào)引起來(lái),否則在加載指令時(shí)將執(zhí)行所有功能(?。?/p>
因此,例如: esc : 'clear()'代替esc : clear()
Java腳本
myModule
.constant('keyCodes', {
esc: 27,
space: 32,
enter: 13,
tab: 9,
backspace: 8,
shift: 16,
ctrl: 17,
alt: 18,
capslock: 20,
numlock: 144
})
.directive('keyBind', ['keyCodes', function (keyCodes) {
function map(obj) {
var mapped = {};
for (var key in obj) {
var action = obj[key];
if (keyCodes.hasOwnProperty(key)) {
mapped[keyCodes[key]] = action;
}
}
return mapped;
}
return function (scope, element, attrs) {
var bindings = map(scope.$eval(attrs.keyBind));
element.bind("keydown keypress", function (event) {
if (bindings.hasOwnProperty(event.which)) {
scope.$apply(function() {
scope.$eval(bindings[event.which]);
});
}
});
};
}]);
- 3 回答
- 0 關(guān)注
- 795 瀏覽
添加回答
舉報(bào)