【问题标题】:Angularjs accordion ng-click on panel-headerAngularjs手风琴ng-点击面板标题
【发布时间】:2016-07-15 21:39:24
【问题描述】:

在 AngularJS UI Bootstrap 中,我想在单击 panel-heading 时激活 isopen,但我找不到方法。 在这个版本中,只有点击链接才会激活。

这是我尝试过的;

<accordion-group is-open="isopen">
    <accordion-heading ng-click="isopen=!isopen">
        I can have markup, too! 
        <i class="pull-right glyphicon" 
           ng-class="{'glyphicon-chevron-down': isopen, 'glyphicon-chevron-right': !isopen}"></i>
    </accordion-heading>
    This is just some content to illustrate fancy headings.
</accordion-group>

ng-click="isopen=!isopen"

This is the link I tried on Plunker

AngularJS UI Bootstrap

提前谢谢..

【问题讨论】:

    标签: angularjs accordion angular-ui-bootstrap


    【解决方案1】:

    编辑: 更好的解决方案是将ng-click="isopen=!isopen" 移动到accordion-group 元素。这样,单击面板标题上的任意位置(包括边缘)即可打开/关闭面板。

    <accordion close-others="oneAtATime">
        <accordion-group is-open="isopen" ng-click="isopen=!isopen">
            <accordion-heading >
               I can have markup, too! 
               <i class="pull-right glyphicon" 
                  ng-class="{'glyphicon-   chevron-down': isopen, 'glyphicon-chevron-right': !isopen}">
               </i>
            </accordion-heading>
            This is just some content to illustrate fancy headings.
        </accordion-group>
    </accordion>
    

    结束编辑

    &lt;accordion-heading&gt;的内容包含在&lt;div&gt;

    <accordion close-others="oneAtATime">
        <accordion-group is-open="isopen" >
            <accordion-heading ng-click="isopen=!isopen">
               <div>
                I can have markup, too! 
               <i class="pull-right glyphicon" 
                  ng-class="{'glyphicon-   chevron-down': isopen, 'glyphicon-chevron-right': !isopen}">
               </i>
               </div>
           </accordion-heading>
           This is just some content to illustrate fancy headings.
       </accordion-group>
    </accordion>
    

    【讨论】:

    • 但是这样就关闭了,如果你点击panel-body
    • 这里不需要isopen,带有div的解决方案在没有自定义isopen变量的情况下是完美的。
    • 这种方法有一个问题,它只使文本区域可点击,而不是整个控件,因此如果您在边缘附近单击它将不起作用。你可以从这里看到plnkr.co/edit/0aiIabxogB1oKIhbjHXa
    • @ArchimedesTrajano 将 ng-click 属性移动到 accordion-group 元素。看到这个 plunkr plnkr.co/edit/IshCNSF6jjWBt9BCukTz?p=preview
    • 你需要稍微改变一下 plnkr,这样 glypicons-chevron-down 中就没有空间了
    【解决方案2】:

    一个非常简单的基于 CSS 的解决方案:

        .panel-heading {
            padding: 0;
        }
    
        .panel-title a {
            display: block;
            padding: 10px 15px;
        }
    

    虽然我没有使用复杂的标题 - 只是如下所示的标题属性,所以我没有使用上面的示例对其进行测试。

    <uib-accordion-group heading="Details" class="form-horizontal" is-open="true">
    

    【讨论】:

    • 这正是我所需要的,而且非常简单。谢谢! (我使用的是&lt;uib-accordion-heading&gt;,虽然是一个基本的)
    • @Sean 你能帮我解决这个问题吗stackoverflow.com/questions/50073157/…
    【解决方案3】:

    您需要做的是更改accordion-group.html 模板,使其标题接受ng-click 事件。

    <div class="panel {{panelClass || 'panel-default'}}">
      <div class="abc panel-heading" ng-keypress="toggleOpen($event)" ng-click="toggleOpen($event)" >
        <h4 class="panel-title">
          <a href tabindex="0" class="accordion-toggle" accordion-transclude="heading"><span ng-class="{'text-muted': isDisabled}">{{heading}}</span></a>
        </h4>
      </div>
      <div class="panel-collapse collapse" collapse="!isOpen">
          <div class="panel-body" ng-transclude></div>
      </div>
    </div>
    

    然后在您的代码中将其指定为accordion-group 的模板网址

    <accordion-group heading="Dynamic Body Content" template-url="accordion-group.html">
    

    示例: http://plnkr.co/edit/EXUgyNi8hrqQbh5maJUx?p=preview

    【讨论】:

    猜你喜欢
    • 2015-12-08
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多