Сообщение от arkada38
|
onclick="document.getElementById('id').click()"//Работает
ng-click="document.getElementById('id').click()"//Не работает
Использовал бы onclick="", но подключил angular-touch и onclick не работает.
Как js функции заставить работать в ng-click?
|
Перестроить мозг. У меня не самый маленький проект, но в нём "id" использован только один раз - для имитации клика в стороннем компоненте. А почему? А потому что нет необходимости: ангуляр в JavaScript-коде предоставляет доступ к DOM'у текущего элемента "из коробки" - через внедряемый в контроллер или директиву параметр '$element', который является jQuery-обёрткой текущего элемента. Всё это, кстати говоря, подробно описано в документации (
и даже на русском). Пример использования:
myapp.controller('MapWithMarkersCtrl', function($scope,$element,$timeout) {
...
// Навешивание обработчика
$element.on('click', handlerName);
...
console.log('fire "click"');
// Имитация клика на нужном DOM-элементе
$timeout(function(){
$element.children('a:first').triggerHandler('click');
},20);
...
});
Использование в HTML ещё проще - просто указываете для нужного html-тега в ng-click имя обработчика, который должен быть определён в текущем скопе.
В Вашем случае:
ng-click="click()"
И псё.
Это работает и в основном html-файле и в шаблонах.