2014-12-17 3 views
0

Итак, у меня есть HTML, который я не контролирую.Как добавить ngClick к существующему элементу

<div id="myDiv"> 
Stuff inside my div... 
</div> 

Я хочу добавить ngClick к нему. Если бы я мог контролировать HTML, я бы просто сделать это

<div id="myDiv" ng-click="doSomething()"> 
Stuff inside my div... 
</div> 

Но как я уже сказал, я не могу изменить HTML. Если это был jQuery, я бы просто сделал

$('#myDiv').click(function(){ 
    doSomething(); 
}); 

Как это сделать в Angularjs? Благодарю.

UPDATE

Судя по downvotes, кажется, что вы, ребята, не довольны тем, что я пытаюсь сделать здесь, поэтому позвольте мне объяснить.

Я использую AngularUI в своем приложении. У AngularUI есть все эти шаблоны, которые они вставляют. Например

<accordion-heading></accordion-heading> 

становится

<div class="panel-heading"> 
    <h4 class="panel-title"> 
     <a href="" class="accordion-toggle" ng-click="toggleOpen()" accordion-transclude="heading"> 
     <span class="ng-binding ng-scope">Heading</span> 
     </a> 
    </h4> 
</div> 

Я хочу добавить ngClick на "панель-название". Я МОЖЕТ перезаписать шаблон и добавить его, но я не хочу этого делать. Исходя из jQuery, имеет смысл просто прослушать событие щелчка на «название панели». Как это делается Угловое? Благодарю.

+1

Вы пытаетесь преобразовать существующий веб-страницу, которую вы не имеете никакого контроля над в угловом приложение? Удачи вам в этом ... – wvdz

ответ

5

Вам нужно найти элемент, как чему-л: angular.element(//selector here); затем добавьте атрибут вам нужно (нг-клик), .attr('ng-click', '//whatever should be here'), а затем скомпилировать его с угловым $compile.

Но. Мне грустно, что вы должны это сделать, надеюсь, вы найдете возможность изменить html.

Docs for compile

+0

Спасибо за ваш ответ. Это имеет смысл. Я получаю downvotes для моего вопроса, поэтому позвольте мне объяснить, что я делаю. Я использую AngularUI, чтобы делать некоторые вещи с моим приложением. У AngularUI есть много шаблонов, которые они используют для создания определенных html-фрагментов. Я могу переписать эти шаблоны, чтобы добавить ngClick там, где они мне нужны, но я считаю, что это очень тяжело. Я просто хочу простой способ прослушать события щелчка и списать то, что мне нужно. Я прихожу из jQuery, так что эта линия мышления имеет смысл для меня. Как это делает угловой человек? – vinhboy

+0

hm, я действительно не использую AngularUI, но здесь я рассмотрю несколько примеров: http://angular-ui.github.io/bootstrap/ (предположим, вы говорили об этом). Что ты можешь сделать? Некоторые директивы оттуда предоставляют функциональность для добавления обратных вызовов, если нет, вы можете попробовать смотреть модель с помощью '$ watch (..)' и выполнять действия в зависимости от этого. Я имею в виду щелчок где-то ** должен ** что-то изменить, чтобы вы могли слушать изменения, а не наблюдать за действиями. – Rasalom

Смежные вопросы