Polymerjs 的自定义菜单元素单击事件

Custom Menu element click event for Polymerjs

本文关键字:单击 事件 元素 菜单 自定义 Polymerjs      更新时间:2023-09-26

我为菜单创建了一个简单的聚合物自定义元素。

我知道,聚合物已经具有用于创建菜单的元素,但是我正在创建一个将在您的网站上显示菜单的组件。

现在,这是我的菜单.html(自定义元素)

<link rel="import" href="../bower_components/polymer/polymer.html">    
<link rel="import" href="../bower_components/core-header-panel/core-header-panel.html">
<link rel="import" href="../bower_components/core-toolbar/core-toolbar.html">
<link rel="import" href="../bower_components/core-menu/core-menu.html">
<link rel="import" href="../bower_components/core-item/core-item.html">
<link rel="import" href="../bower_components/core-header-panel/core-header-panel.html">
<link rel="import" href="../bower_components/core-drawer-panel/core-drawer-panel.html">
<link rel="import" href="../bower_components/core-icons/core-icons.html">
<link rel="import" href="../bower_components/paper-icon-button/paper-icon-button.html">
<polymer-element name="my-menu">
    <template>
        <style>
          core-header-panel {
            background: white;
          }
          core-toolbar {
            background-color: #03A9F4;
          }
          #navheader {
            background-color: #56BA89;
          }
          .content {
            padding: 20px;
          }
          /* drawer is always visible on a wide screen
             so menu button isn't required */
          core-drawer-panel:not([narrow]) #navicon {
            display: none;
          }
        </style>
        <core-drawer-panel id="drawerPanel">
            <core-header-panel drawer>
                <core-toolbar id="navheader">
                    <span>Menu</span>
                </core-toolbar>
                <core-menu>
                    <core-item label="One"></core-item>
                    <core-item label="Two"></core-item>
                </core-menu>
            </core-header-panel>
            <core-header-panel main>
                <core-toolbar id="mainheader">
                    <paper-icon-button id="navicon" icon="menu" on-click="{{togglemenu}}"></paper-icon-button>
                    <span flex>Title</span>
                </core-toolbar>
                <div class="content">
                    If drawer is hidden, press button to display drawer.
                </div>
            </core-header-panel>
      </core-drawer-panel>
    </template>
    <script>
        Polymer('my-menu', {
            ready: function () {
                // alert("hello");
            },
            togglemenu: function () {
                var drawerPanel = document.getElementById('drawerPanel');
                // drawerPanel.togglePanel();
                console.log(drawerPanel);
            }
        });
    </script>
</polymer-element>

现在

正如你到现在所看到的,当调用切换菜单函数时,我想切换面板,但我无法做到这一点。

无论如何要做到这一点?

当您在自定义元素中工作时,您可以使用聚合物选择器在阴影DOM中选择元素。 这将使您的切换菜单功能看起来更像

       togglemenu: function () {
            var drawerPanel = this.$.drawerPanel;
            drawerPanel.togglePanel();
        }

在这个函数中,this.$.drawerPanel选择的方式与document.getElementById('drawerPanel')相同,除了getElementById是在文档级别而不是这个元素影子DOM上查找。