Javascript 将ng click事件添加到angular ui accordion

Javascript 将ng click事件添加到angular ui accordion,javascript,html,twitter-bootstrap,angularjs,angular-ui,Javascript,Html,Twitter Bootstrap,Angularjs,Angular Ui,我正在使用并且已经开始使用手风琴 当有人打开或关闭手风琴组时,我需要触发ng click事件 我做了一些研究,发现了这个线索: 它链接到一个示例,该示例显示了一个对我的用例不满意的解决方案 以下是解决方案html: <accordion> <accordion-group> <accordion-heading> <span ng-click="foo()">Try clicking me!</span&g

我正在使用并且已经开始使用手风琴

当有人打开或关闭手风琴组时,我需要触发
ng click
事件

我做了一些研究,发现了这个线索:

它链接到一个示例,该示例显示了一个对我的用例不满意的解决方案

以下是解决方案html:

<accordion>
  <accordion-group>
      <accordion-heading>
          <span ng-click="foo()">Try clicking me!</span>
      </accordion-heading>
      Some Body 3
  </accordion-group>
</accordion>

试着点击我!
一些机构3
但是只有在单击span文本时才会触发ng click事件。如果在文本外单击,则手风琴仍会打开或关闭,而不会出现任何单击事件

为了解决这个问题,我尝试将跨度宽度和高度设置为100%,并设置display:block。 我也考虑过完全移除填充物,但我想知道是否有比破解更好的方法

有人知道如何将ng click事件附加到整个手风琴组吗?或者如何使跨度填充整个组

我的全部代码:

  <accordion close-others="true">
    <accordion-group ng-repeat="question in level">
        <accordion-heading style="padding: 0">
            <div style="display: block; margin: 0px" ng-click="set_question(question.title)">{{ question.title }}</div>
            <i class="icon-check" ng-show="has_solved_all"></i>
        </accordion-heading>
        <span ng-bind-html-unsafe="question.content"></span>
    </accordion-group>
  </accordion>
    <br>
    Question Open: {{ question_open }}

{{question.title}

问题开放:{{问题开放}
您为什么需要
ng单击
特定解决方案?有一个
is open
属性,您可以查看该属性,该属性在打开/关闭手风琴时触发。

在手风琴标题或移动下创建顶级div

<i class="icon-check" ng-show="has_solved_all"></i>

在div元素内部-

<div style="display: block; margin: 0px"

若您在打开事件的一个存在点上继续添加另一个单击。我建议在标签内添加以下指令:

myApp.directive('functionClick',function(){
    return{
        restrict: 'E',
        terminal: true,
        controller: 'NameOfController',
         templateUrl: "templateFunctionClick.html",
        link: function($scope, $element, $attrs, $ctrl){
        }
    }

});

<accordion-group  is-open="status.open">
  <accordion-heading >
    {{headerName}}
    <function-click></function-click>
  </accordion-heading>
</accordion-group>
myApp.directive('functionClick',function(){
返回{
限制:'E',
终端:是的,
控制器:“控制器名称”,
templateUrl:“templateFunctionClick.html”,
链接:函数($scope、$element、$attrs、$ctrl){
}
}
});
{{headerName}}
templateFunctionClick.html的位置:

<a ng-click="$event.stopPropagation();clickMeFunction()" ><span>Click Me!</span> </a>
点击我!

确保添加$event.stopPropagation();为了避免同时调用toggelOpen()的单击。

如果您使用的是Angular的新版本,则需要处理一个名为
isOpenChange
的事件

<accordion>
  <accordion-group (isOpenChange)="foo()">
   <button class="btn btn-link btn-block clearfix" accordion-heading type="button">
    <div class="pull-left float-left">Header Title</div>
   </button>

   <div>Some Body 3</div>
 </accordion-group>
</accordion>

标题
一些机构3

也许我可以使用打开的。我正在搜索文档。更具体地说,我的问题是我有一个ng repeat=“问题中的问题”。每个问题都以手风琴展开。然后在页面底部写下你正在查看的问题。哎呀,看起来很像。无论如何,我想我们可以把这个问题标记为重复。使用$watch是个好主意吗。因为angular不鼓励使用$watch。因为我们正在干预消化循环。可能的重复
<accordion>
  <accordion-group (isOpenChange)="foo()">
   <button class="btn btn-link btn-block clearfix" accordion-heading type="button">
    <div class="pull-left float-left">Header Title</div>
   </button>

   <div>Some Body 3</div>
 </accordion-group>
</accordion>