2015-10-21 18 views
5

Vorrei riportare un documento-discesa-menù Polymer al suo stato iniziale in JavaScript quindi nulla è selezionato, in modo che appaia in questo modo:Come posso resettare un menu a discesa di carta in Polimero in modo che non sia selezionato nulla?

paper-dropdown-menu nothing selected

sono in grado di aggiungere un id al indice di modifica di carta-menù all'interno della carta-discesa-menù e accedervi in ​​JavaScript e scegli è selezionato:

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

Tuttavia, posso selezionare solo un elemento a disposizione, in modo che il numero deve essere 0 o superiore. Non posso impostarlo su -1 per selezionare nulla per restituirlo visivamente allo stato iniziale, tuttavia posso registrare lo stato selezionato su ciò a cui l'ho appena impostato. Altri valori che ho provato a modificare selezionati sono nulli e non definiti.

Ecco il codice html che sto utilizzando per la carta-discesa-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]]"> 

risposta

7

suo un solo campo pronto. Quindi potrebbe essere necessario utilizzare la funzione fornita da Polymer per impostare solo valori pronti. Prova il seguito

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

Se quanto sopra non funziona, provare altre varianti come qui di seguito

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

Grazie! document.getElementById ("accountTypeDropdown") ._ setSelectedItem (null); lavori! – VagueExplanation

+0

Il ripristino funziona con _setSelectedItem (null), tuttavia esiste una cosa strana. L'impostazione successiva di un nuovo valore modificando il modello funziona solo se il nuovo valore differisce dal valore prima del reset. Ho creato un testcase qui: http://pm.yves.glodt.name/ – yglodt

+6

Prova ad aggiungere 'selected = {{selectedMenu}}' su 'paper-menu'. E imposta 'selectedMenu = null' ogni volta che vuoi reimpostare l'oggetto. – Srik

1

È possibile attivare manualmente un evento:

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

Oggi seemts meglio usare <paper-listbox></paper-listbox> .

Con esso si può semplicemente impostare selected a 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> 

E poi nel JavaScript:

this.$.list.selected = null; 
Problemi correlati