如何将ngClick添加到现有元素

时间:2014-12-17 19:57:10

标签: angularjs angular-ui

所以我有一些我无法控制的HTML。

<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中执行此操作?感谢。

更新

从支持者的角度来看,似乎你们对我在这里要做的事情感到不满意,所以让我解释一下。

我在我的应用中使用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添加到&#34; panel-title&#34;。我可以覆盖模板并添加它,但我不想这样做。来自jQuery,只需在&#34; panel-title&#34;上听一个点击事件就有意义了。怎么做Angular?感谢。

1 个答案:

答案 0 :(得分:5)

您需要找到元素,如:angular.element(//selector here);然后添加您需要的属性(ng-click),.attr('ng-click', '//whatever should be here'),然后使用角度$compile进行编译。

但是。我很难过你必须这样做,我希望你能找到改变html的可能性。

Docs for compile