Показать сообщение отдельно
  #2 (permalink)  
Старый 07.12.2014, 13:02
Аватар для MetaDriver
Аспирант
Отправить личное сообщение для MetaDriver Посмотреть профиль Найти все сообщения от MetaDriver
 
Регистрация: 24.04.2014
Сообщений: 66

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

Последний раз редактировалось MetaDriver, 07.12.2014 в 18:55.
Ответить с цитированием