代码之家  ›  专栏  ›  技术社区  ›  Juan Bravo Roig

应用程序中的手风琴

  •  3
  • Juan Bravo Roig  · 技术社区  · 6 年前

    我在谷歌应用程序制造商做了一个手风琴,它工作得很好。

    但由于缺陷,第一排手风琴显示了细节部分…除非指定,否则我不想显示详细信息(单击“展开”按钮)

    有可能吗?我试过通过CSS来完成,但它不起作用…

    我也尝试过:(widget=expand按钮)

    if (widget.parent.parent.children.Accordion1Detail.visible === false){
      widget.parent.parent.children.Accordion1Detail.visible = true;
    } else {
      widget.parent.parent.children.Accordion1Detail.visible = false;
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Darpan Sanghavi    6 年前

    参考 this 模板。它有手风琴展开/不展开的例子。

    总的来说,您需要绑定以下内容 onAttach 事件。

      widget.styles = ['collapsed'];
      widget.getElement().removeAttribute('aria-expanded'); 
    

    绑定 toggleAccordionRow 方法 onClick() 事件,

    /**
     * Expands an accordion row. 
     * Extends default functionality of the Accordion widget.
     * @param {Widget} accordionRow - accordion row which was clicked.
     */
    function expandAccordionRow(accordionRow) {
      var rows = accordionRow.parent.children._values;
    
      var i = 0;
      for (i = 0; i < rows.length; i++) {
        if (rows[i].name.indexOf('YourElementName') > -1) {
          rows[i].styles = [];
        } else {
          rows[i].styles = ['collapsed'];
        }
      }
      accordionRow.styles = [];
    }
    
    
    /**
     * Collapses an accordion row. 
     * Extends default functionality of the Accordion widget.
     * @param {Widget} accordionRow - accordion row which was clicked.
     */
    function collapseAccordionRow(accordionRow) {
      var rows = accordionRow.parent.children._values;
    
      var i = 0;
      accordionRow.styles = ['collapsed'];
    
      for (i = 0; i < rows.length; i++) {
        if (rows[i].name.indexOf('YourElementName') > -1) {
          rows[i].styles = ['hidden'];
        }
      }
    }
    
    
    /**
     * Toggles the appearance of an accordion row. 
     * Extends default functionality of the Accordion widget.
     * @param {Widget} accordionRow - accordion row which was clicked.
     */
    function toggleAccordionRow(accordionRow) {
      if (accordionRow.styles.length === 0) {
        collapseAccordionRow(accordionRow);
      } else {
        expandAccordionRow(accordionRow);
      }
    }