У меня есть эта директива, которая фокусируется на поле ввода, когда она появляется, и скрывает ее, когда она теряет фокус, или нажата клавиша esc/enter/tab. Он работает отлично, но я хотел знать, есть ли способ передать массив или объект ключей (и типы событий) вместо жесткого кодирования ключей и событий в самой директиве? Вот код:Передача массива в угловую директиву
.directive('bindKeys', function ($timeout) {
return {
restrict: 'A',
scope: {
trigger: '='
},
link: function(scope, elem){
elem.bind('keydown keypress blur', function (event) {
if(event.which === 13 || event.which === 9 || event.which === 27 || event.type === 'blur') {
event.preventDefault();
$timeout(function(){
scope.trigger.property = false;
});
}
});
scope.$watch('trigger.property', function(value) {
if(value === true) {
$timeout(function() {
elem[0].focus();
});
}
});
}
};
});
элемент выглядит следующим образом:
<input bindKeys trigger='trigger'></input>
Благодаря
вы можете передать свой конфигурационный массив как Атрибут – MamaWalter