2015-10-21 21 views
5

Ich möchte ein Polymer Papier-Drop-Down-Menü, es ist Ausgangszustand in JavaScript zurückgesetzt, so wird nichts ausgewählt, so dass es wie folgt aussieht:Wie kann ich ein Papier-Dropdown-Menü in Polymer zurücksetzen, so dass nichts ausgewählt ist?

paper-dropdown-menu nothing selected

Ich bin in der Lage eine id das hinzufügen Papier-Menü-Tag in dem Papier-Dropdown-Menü und den Zugang in JavaScript und wählt es ausgewählten Index:

document.getElementById("accountTypeMenu").selected = 1; 

ich kann aber nur ein verfügbares Element auszuwählen, so dass die Zahl auf 0 oder mehr benötigt. Ich kann es nicht auf -1 setzen, um nichts auszuwählen, um es optisch in den Ausgangszustand zurückzuversetzen, aber ich kann den ausgewählten Zustand auf das, was ich gerade eingestellt habe, protokollieren. Andere Werte, für die ich versucht habe, zu ändern, sind null und undefiniert.

Hier ist der HTML Ich bin für das Papier-Drop-Down-Menü:

<paper-dropdown-menu 
id="accountTypeDropdown" 
selected-item="{{selectedItem}}" 
selected-item-label="{{selected}}" 
label='&#65290;Account type' 
style="width:50%;" 
noink 
no-animations> 

    <paper-menu id="accountTypeMenu" 
       class="dropdown-content" 
       onmouseup="requiredMenuFieldSelected('accountType')"> 
         <template is="dom-repeat" 
            items="{{accountTypes}}" 
            as="accountType"> 
          <paper-item value="[[accountType.id]]">[[accountType.name]]</paper-item> 
         </template> 
    </paper-menu> 

</paper-dropdown-menu> 

<input is="iron-input" 
     name="accountType" 
     type="hidden" 
     value$="[[selectedItem.value]]"> 

Antwort

7

Es ist ein fertig Feld. Daher müssen Sie möglicherweise die bereitgestellte Funktion "Polymer" verwenden, um nur die Werte für "Fertig" festzulegen. Versuchen Sie, die unten

document.getElementById("accountTypeDropdown")._setSelectedItem({}); 

Wenn die oben nicht funktioniert, versuchen andere Varianten wie unten

document.getElementById("accountTypeDropdown")._setSelectedItem(null); 
document.getElementById("accountTypeDropdown")._setSelectedItem(); 
+0

Thank you! document.getElementById ("accountTypeDropdown") ._ setSelectedItem (null); funktioniert! – VagueExplanation

+0

Das Zurücksetzen funktioniert mit _setSelectedItem (null), jedoch gibt es eine seltsame Sache. Einen neuen Wert nachträglich durch Ändern des Modells einzustellen, funktioniert nur, wenn der neue Wert vom Wert vor dem Zurücksetzen abweicht. Ich habe hier einen Testfall eingerichtet: http://pm.yves.glodt.name/ – yglodt

+6

Versuchen Sie 'selected = {{selectedMenu}}' auf 'Papier-Menü' hinzuzufügen. Und setzen Sie 'selectedMenu = null 'immer dann, wenn Sie das Element zurücksetzen möchten. – Srik

1

Sie können ein Ereignis manuell auslösen:

document.querySelector("#accountTypeDropdown")._onIronDeselect(); 
1

Heutzutage ist es seemts besser <paper-listbox></paper-listbox> zu verwenden .

Mit ihm können Sie einfach eingestellt selected zu null:

<paper-dropdown-menu label="Type"> 
    <paper-listbox class="dropdown-content" selected="{{myObj.type}}" attr-for-selected="value" id="list"> 
     <paper-item value="0">Type 0</paper-item> 
     <paper-item value="1">Type 1</paper-item> 
    </paper-listbox> 
</paper-dropdown-menu> 

Und dann in JavaScript:

this.$.list.selected = null;