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

时间:2015-01-08 22:52:59

标签: dart polymer dart-polymer

此问题于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.

在核心菜单按钮下的评论中有一个实施的解决方案(9月19日):

There is now a stickySelection property that defaults to false.

因为它默认为false,所以我永远不需要设置它。但粘性行为仍然存在,我无法确定设置属性/属性的位置。这是菜单:

  <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>

在两个菜单选项中,我想将菜单返回到&#34;没有选择。&#34;

1 个答案:

答案 0 :(得分:1)

stickySelection被重构时,core-menu-button属性似乎已删除。我不确定这是否是故意的,所以我重新打开了原来的bug。

作为此时的解决方法,您可以侦听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,当覆盖完成关闭时会被触发。我担心如果用户关闭并快速重新打开菜单会导致时间问题,但它不会出现在核心菜单按钮上出现问题,也许是因为关闭菜单没有延迟。)