【问题标题】:hamburger icon is not showing up even if I call componentHandler.upgradeDom();即使我调用 componentHandler.upgradeDom(); 汉堡图标也没有出现
【发布时间】:2015-08-27 16:12:03
【问题描述】:
<header class="mdl-layout__header">
    <div class="mdl-layout__header-row">

        <!-- Navigation -->
        <nav class="mdl-navigation">
            <a class="mdl-navigation__link is-active" href="/">link</a>
            <a class="mdl-navigation__link is-active" href="/">link</a>
        </nav>
    </div>
</header>
<div class="mdl-layout__drawer">
    <nav class="mdl-navigation">
        <a class="mdl-navigation__link is-active" href="/">link</a>
        <a class="mdl-navigation__link is-active" href="/">link</a>
    </nav>
</div>

<!-- Colored FAB button with ripple -->
<button class="mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
    <i class="material-icons">add</i>
</button>

根据http://mdlhut.com/2015/07/where-is-the-mdl-drawer-icon/,只要我在动态加载html后调用componentHandler.upgradeDom(),它就应该可以工作。只是为了确保我正确调用了 upgradeDom,我添加了按钮以查看是否添加了涟漪效应。并且按钮已更新,但未出现汉堡包图标。

如果我将 html 内联,则会出现汉堡图标。

【问题讨论】:

  • 你有没有看到它是否有错误的 CSS 样式,比如白色?
  • 调用 upgradeDom() 听起来像个 hack。真正的解决方案是什么?

标签: material-design-lite


【解决方案1】:

由于您是动态加载 html,您应该在加载 DOM 后在您的 init 函数中运行以下内容。注意setInterval 函数确保DOM 在执行componentHandler 方法之前有足够的时间加载

jQuery

 $(document).ready(function() {
      setInterval(function() {
           componentHandler.upgradeAllRegisteredElements();
      }, 1000);
 });

DOM API

 document.addEventListener('DOMContentLoaded', function() {
      setInterval(function() {
           componentHandler.upgradeAllRegisteredElements();
      }, 1000);
 });

【讨论】:

  • 嗨,已经尝试使用 setInterval 和 dom 准备好。该按钮已升级,因此我认为它可以工作。我只是不知道为什么汉堡图标没有出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多