【问题标题】:Add MDL tab programmatically以编程方式添加 MDL 选项卡
【发布时间】:2016-03-11 16:36:34
【问题描述】:

我有一个 Material Design lite 页面,它使用以单个选项卡开头的选项卡式布局。我有一个添加附加选项卡的菜单操作。 JavaScript 代码将所需的 标记和内容添加到

中的选项卡栏,并将相关的
和内容
附加到
标记。
JavaScript 代码然后为两个添加的父元素调用 componentHandler.upgradeElement() 函数。

表面上这是可行的,新标签显示在标题中,新内容

可以通过单击标签来显示。但是,单击原始选项卡表明“升级”不完整。标签栏中的两个元素有些不同,都具有“is-active” CSS 类。
<div class="mdl-layout__tab-bar-container">
  <div class="mdl-layout__tab-bar mdl-js-ripple-effect is-casting-shadow mdl-js-ripple-effect--ignore-events" id="hdrTabs" data-upgraded=",MaterialRipple">
    <a href="#scroll-tab-1" class="mdl-layout__tab is-active">Checklists<span class="mdl-layout__tab-ripple-container mdl-js-ripple-effect" data-upgraded=",MaterialRipple"><span class="mdl-ripple is-animating" style="width: 1475.13px; height: 1475.13px; transform: translate(-50%, -50%) translate(349px, 31px);"></span></span></a>
    <a class="mdl-layout__tab is-active" href="#scroll-tab-2">New Checklist</a>
  </div>
</div>

这两个

元素应该是这样,但是与新引入的选项卡相关的部分没有 display: none CSS 属性,因此内容在原始选项卡的内容下可见。

是从我自己的代码库中管理以编程方式添加的选项卡的唯一解决方案吗?

【问题讨论】:

    标签: material-design-lite


    【解决方案1】:

    有两点需要考虑。

    • 必须为 MDL 组件元素调用upgradeElement。在您的情况下,类为mdl-js-tabs 的div。 也许这就是你正在做的(JavaScript 代码然后为两个添加的父元素调用 componentHandler.upgradeElement() 函数。)
    • 由于mdl-js-tabs 的div 已经注册,您需要在调用upgradeElement 之前调用downgradeElements。

    因此应该执行以下操作:

    var jstabs  = document.getElement /with mdl-js-tabs/;
    componentHandler.downgradeElements(jstabs);
    componentHandler.upgradeElement(jstabs);
    

    【讨论】:

    • 感谢您的指点。还不是一个完整的解决方案,但我很清楚我的页面上可能还有其他因素(错误/复杂性)妨碍了我。我会先尝试一个“干净”的测试页面,然后从那里开始工作。
    • 编辑到上面:我建立了一个干净的页面,但未能正确激活新添加的选项卡。有趣的是,然后我创建了一个带有两个原始选项卡的页面,然后在选项卡栏上调用了 .downgradeElements() ,这对两个选项卡的功能没有影响。也许升级/降级功能还不包括选项卡支持?我将尝试从我自己的代码中复制 MDL 选项卡支持(不需要太多)
    • 对不起,我没听懂。这是一个修改后的codepen,它通过 addtab 函数添加了一个选项卡。
    • 官方文档指出,每个标签栏只能有一个“处于活动状态”的链接和面板。也许你有两个的事实引起了问题?
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2014-11-28
    • 1970-01-01
    • 2015-10-31
    • 2014-10-20
    相关资源
    最近更新 更多