Мне очень нравится, как новая директива ng-click
в Angular теперь автоматически включает функции для сенсорных событий. Тем не менее, мне интересно, можно ли получить доступ к этой службе touch-event из моей пользовательской директивы? У меня есть множество директив, которые требуют, чтобы я привязывал событие click к данному элементу, но я просто делаю это с использованием типичного синтаксиса jquery (например: element.on('click', function(){ ... })
). Есть ли способ связать событие ng-click
с элементом внутри директивы? Без необходимости вручную поставить тег ng-click
на мой элемент в HTML моего представления ...?AngularJS: доступ к службе ngTouch из директивы?
Я хочу, чтобы иметь возможность использовать мощность обоих щелчков и события касания. Я мог бы явно импортировать библиотеку (например, HammerJS или QuoJS), но я бы предпочел не делать этого, тем более, что Angular уже делает это.
Я могу получить доступ к сервису $swipe
и связать с ним различные элементы, но существует ли аналогичная услуга для ngTouch
?
Для справки, это пример того, когда я хотел бы сделать это:
mod.directive('datepicker', ['$timeout', function($timeout){
return {
link: function(scope, elem, attrs){
var picker = new DatePicker();
elem.on('click', function(e){
picker.show();
});
// I would rather do something like:
// elem.on('ngTouch', function(){ ... });
//
// or even:
// $ngTouch.bind(elem, {'click': ..., 'touch': ...});
}
}
}]);
UPDATE: Как отмечено ниже, исходный код ng-click
директивы here. Может ли кто-нибудь увидеть способ использовать этот код и превратить его в «связующую» службу?
вы имеете в виду что-то вроде этого: http://stackoverflow.com/questions/15279244/dynamically -add-directives-on-angularjs – akonsu
смысл, просто обертывание элемента 'elem' в другом элементе с атрибутом' ng-click'? или добавление атрибута 'ng-click' в элемент' elem'? Я предполагаю, что это сработает ... но это похоже на «хак-иш» (особенно с вопросами «компиляции», упомянутыми в этом сообщении) ... идеи? – tennisgent
Насколько я понимаю, модуль 'ngTouch' реализует замену директивы' ngClick' (см. Https://github.com/angular/angular.js/blob/master/src/ngTouch/directive/ngClick.js) , попробуйте ввести «ngClickDirective» и сделайте то, что предлагает этот пост: https://groups.google.com/d/msg/angular/xBFABCLv4XI/maoKgWubzQ0J – akonsu