如何禁用聚合物核心菜单中的粘性选择

How to disable sticky selection in polymer core-menu

2014 年 9 月 9 日 Github 回购中提出了这个问题:

Whenever I select a menu item, and the menu disappears, the next time 
I open the menu, my previous selection remains selected. This makes it 
impossible to reselect the same menu item.

core-menu-button 下的评论中有一个已实施的解决方案(9 月 19 日):

There is now a stickySelection property that defaults to false.

因为它默认为 false,所以我永远不需要设置它。但是粘性行为仍然存在,我不知道在哪里设置 attribute/property。这是菜单:

  <core-menu-button>
    <core-icon-button icon='more-vert'></core-icon-button>
    <core-dropdown class='dropdown'>
      <core-menu on-core-select='{{menuSelectHandler}}'>
        <template repeat='{{menuItems}}'>
          <core-item label='{{}}'></core-item>
        </template>
      </core-menu>
    </core-dropdown>
  </core-menu-button>

在菜单选择之间,我想 return 菜单 "nothing selected."

看起来 stickySelection 属性 在重构 core-menu-button 时被删除了。我不确定这是不是故意的,所以我重新打开了原来的错误。

作为同时的解决方法,您可以监听 on-core-overlay-open 事件(当菜单覆盖打开或关闭时触发)并手动清除选择。在标记中,添加事件侦听器并为菜单指定一个 ID:

<core-menu-button on-core-overlay-open="{{menuOpen}}">
  <core-icon-button icon='menu'></core-icon-button>
  <core-dropdown class='dropdown'>
    <core-menu id="menu" on-core-select='{{menuSelectHandler}}'>

menuOpen 方法如下所示:

    menuOpen: function(e) {
      if (! e.detail.opened) {
        this.$.menu.selected = null;
      }
    }

(或者,您可以监听 core-overlay-close-completed,它会在覆盖层完成关闭时触发。我担心如果用户快速关闭并重新打开菜单会导致计时问题,但事实并非如此这似乎是核心菜单按钮的问题,可能是因为没有延迟关闭菜单。)