Polymer 1.0: come passare un argomento ad una funzione Polymer da un attributo?

C’è un modo per passare un argomento ad una funzione Polimero da un attributo elemento all’interno del suo ?

     ... Click ...    (function() { Polymer({ is: 'example-element', properties: {...}, bar: function(arg){ // Do stuff using argument arg } }); })();  

Ricerca di base

Ho sfogliato la documentazione che sembra essere silenziosa sull’argomento. Non dice se puoi o meno. Ma quando ci provo, fallisce. Ma forse non lo sto facendo correttamente. Quindi ho bisogno di assistenza.

L’unica cosa che ho incontrato sono gli ascoltatori di eventi che non sembrano in grado di prendere gli argomenti che voglio passare. Dì, un id o un name .

Tentativi precedenti

Ho provato (senza successo) a fare cose come:

  Click  

Ma niente sembra funzionare.

    L’idea dell’ascoltatore dell’evento non funziona perché limita gli argomenti e non riesco a ottenere l’ id , per esempio, di cui ho bisogno.

    Potresti invece utilizzare gli attributi di dati HTML5. Prova così:

     Click ...  

    Dopo aver cercato molto, ho trovato quella che penso sia la soluzione più pulita ansible.

    Se il pulsante di carta è all’interno di un modello, ad es

      

    Quindi è ansible accedere alle proprietà tramite la proprietà “model” nell’object evento passato alla funzione.

     itemTapped: function(oEvent){ // oEvent.model.get is the getter for all properties of "item" in your bound array console.log(oEvent.model.get('item.task')); } 

    Brillare più luce su una sottile differenza menzionata nei commenti sopra.

    Avviso $= deve essere usato se si legge un bind di dati.

     Tap ... _handleTap: function(e) { var foo = e.target.dataset.foo; var bar = e.target.dataset.bar; } 

    All’interno di dom-repeat , l’ item (o il nome che tu gli dai) è disponibile su e.model.item .

      ... _handleTap: function(e) { var item = e.model.someItem; } 

    C’è un modo per passare un argomento ad una funzione Polimero da un attributo di un elemento all’interno del suo .

    Invece di usare un evento usa un legame calcolato . I binding calcolati possono accettare stringhe letterali.

    Guarda l’esempio di lavoro qui sotto. In questo esempio, un pulsante può essere nascosto in base al parametro passato.

            

    Dopo aver provato le soluzioni suggerite qui che nessuno di loro ha funzionato, ho apportato una leggera modifica alle soluzioni @Amit e @Mowzer. Ho funzionato in questo modo:

         

    Proprio ora ho ottenuto questo lavoro:

     Click ...  

    Forse il modo più efficace per recuperare l’argomento è il seguente:

     Click ... _getArgs: function(e) { var args = Polymer.dom(e).rootTarget.getAttribute('data-args'); ... } 

    A seconda della situazione, il modo più semplice per farlo è di solito utilizzando dom-repeat . Se è ansible formattare i dati come una matrice di oggetti, è sufficiente utilizzare e.model per ottenere tutto.