Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   ng-click и onclick (https://javascript.ru/forum/angular/52171-ng-click-i-onclick.html)

arkada38 06.12.2014 20:55

ng-click и onclick
 
onclick="document.getElementById('id').click()"//Работает
ng-click="document.getElementById('id').click()"//Не работает

Использовал бы onclick="", но подключил angular-touch и onclick не работает.
Как js функции заставить работать в ng-click?

MetaDriver 07.12.2014 13:02

Цитата:

Сообщение от arkada38 (Сообщение 345069)
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-файле и в шаблонах.


Часовой пояс GMT +3, время: 06:53.