Премахнете избора на елемент в менюто за хартия след щракване

Пускам polymer 1.0.9 елемента paper-menu, но поведението по подразбиране не е точно както бих искал.

Когато изберете елемент в paper-menu, елементът се превключва. За да изберете отново същия елемент, ще трябва да изберете друг елемент в менюто и след това да изберете отново първия.

В момента работи така: https://elements.polymer-project.org/elements/paper-menu?view=demo:demo/index.html

Но бих искал поведението на обикновен бутон, но все пак искам "безплатните" поведения, които идват с paper-menu.

Има ли интелигентен начин да премахнете отметката от бутона директно, след като сте го натиснали? Това е моето меню:

<paper-menu id= "action-menu">
  <template is="dom-repeat" items="{{actions}}" as="action">
    <paper-icon-item id={{action.attributes.id}}>
      <iron-icon icon="{{action.attributes.icon}}" item-icon>
      </iron-icon>
        <p>{{action.attributes.title}}</p>
    </paper-icon-item>
  </template>
</paper-menu>

person Jonathan Andersson    schedule 17.08.2015    source източник
comment
Не е ли единична/множествена селекция единственото поведение от paper-menu? Ако не искате това, вероятно изобщо не трябва да използвате paper-menu, вместо това какво ще кажете за paper-material с куп paper-buttons?   -  person Justin XL    schedule 17.08.2015
comment
Да, знам, но менюто за хартия дава някои безплатни функции, които бих искал, ако няма начин да го реша, ще трябва да използвам бутоните вместо това.   -  person Jonathan Andersson    schedule 18.08.2015


Отговори (2)


Реших това, като зададох свойството selected на null в манипулатора на събития за менюто. Работи добре.

Като алтернатива (Ако като мен използвате елемента <paper-menu-button>, може би бихте могли да използвате и paper-dropdown-close на <paper-menu-button> или <paper-dropdown-menu>.

PS: Знам, че това е стар въпрос, но има отворен доклад за грешка на https://github.com/Polymer/paper-menu-button/issues/56 и аз имах точно този проблем днес - така че може би това е полезно за някого.

person ootwch    schedule 01.11.2016

Можете да опитате да слушате събитието за активиране на желязото и когато споменатият елемент бъде избран, можете да извикате menu.select(index), за да премахнете избора му.

нещо като [псевдо-код следва]:

<paper-menu id="action-menu" on-iron-activate="onMenuActivate">

...

onMenuActivate: function(event, detail) {
    var menu = Polymer.dom(event).localTarget,
        name = event.detail.selected,
        selected = (menu.selectedValues || []).indexOf(name) == -1;

    if (name == MY_SPECIAL_INDEX && selected) {
          menu.select(name);
    }
}

Събитието за активиране се задейства преди избраното, поради което трябва да се провери дали избраният елемент не е в текущия списък с избрани елементи.

person urandom    schedule 17.08.2015