2015-07-11 8 views
6

Ich möchte die UI-Elemente von Polymer verwenden (z. B. Eisen-Symbole, Papier-Schaltfläche usw.), ohne benutzerdefinierte Elemente oder Vorlagen zu erstellen.Wie höre ich Ereignisse für Elemente in Polymer 1.0?

Zum Beispiel lassen Sie uns sagen, ich habe:

<paper-button id="my-button">Click me</paper-button> 

Wie höre ich für das Ereignis ‚Klick‘? Das Hinzufügen eines Ereignis-Listeners zum "Klicken" für die ID "Meine-Schaltfläche" funktioniert nicht.

+0

Was haben Sie bisher für Code geschrieben? Haben Sie die [docs] (https://www.polymer-project.org/1.0/docs/devguide/events.html) überprüft? –

+0

Ich habe '$ ('meine-taste') versucht. AddEventListener ('click', myFunc)' aber das funktioniert nicht; es scheint, als würde Polymer das Click-Event irgendwie verschlucken? Die Dokumentation sagt, wie es geht, wenn Sie eine [neue ''] (https://www.polymer-project.org/1.0/docs/devguide/events.html) deklarieren, aber ich mache nicht ein neues Modul ... Ich möchte '' wiederverwenden, idealerweise ohne es in ein neues Modul zu verpacken. – tigeroctopus

Antwort

6

Es sollte einfach funktionieren? Ich gehe davon aus, dass Sie die Benutzeroberflächenelemente von Polymer im Hauptdokument (index.html) verwenden möchten, ohne benutzerdefinierte Komponenten erstellen zu müssen. Angenommen, Sie haben

<paper-button id="btn">Click me</paper-button> 

in index.html. Via Vanille js,

document.querySelector("#btn").addEventListener("click", function (e) {...}); 

und über jQuery,

$("#btn").on("click", function (e, u) {...}); 

p/s: Ich habe eine schnelle jsbin als Demo schreiben würde, aber rawgit scheint Probleme zu haben, und ich bin nicht Kenntnis von alternativen CDNs, die Polymerelemente beherbergen.

Lassen Sie mich eines klarstellen: Polymerelemente, und durch Erweiterung Web-Komponenten, sind so konzipiert, dass sie Framework-agnostisch sind und, wenn sie richtig codiert sind, funktionieren wie jedes andere HTML-Element. Bitte dom-bind nicht wegen dom-binding. Sie nur tun Sie dies, wenn Sie a) erfordern Polymer Sugaring (wie Datenbindung) in Ihrem Anwendungsfall; und b) Sie möchten Polymer Sugaring von Ihrem index.html verwenden - wenn Sie dies nicht tun, fügen Sie bitte keine zusätzliche Komplexität zu Ihrer App hinzu.

Ich habe ein CDN dienen Polymerelemente gefunden, so:

Look, no dom-bind and elements are working with vanilla js.

Look, no dom-bind and elements are working with jQuery.

+0

Sie werden wahrscheinlich auch Ihren Code in index.html in ein ''-Tag einfügen wollen. Weitere Informationen finden Sie [hier] (https://www.polymer-project.org/1.0/docs/devguide/templates.html#dom-bind). –

+1

Nein, es ist optional. Wickeln Sie mit 'dom-bind' nur dann, wenn Sie den Zucker von Polymer verwenden möchten (z. B. Datenbindung, Beobachter, Listener, On- * Ereignisse usw.). Web-Komponenten sind in der Regel so konzipiert, dass sie wie jedes andere HTML-Element eigenständig funktionieren. – zerodevx

3

Sie können versuchen:

<template is="dom-bind" id="t"> 
 
<paper-button id="my-button" on-click="buttonClicked">Click me</paper-button> 
 
</template> 
 

 
<script> 
 
var template = document.querySelector('#t'); 
 
template.buttonClicked= function() { 
 
\t \t \t \t alert("he clicked me :)"); 
 

 
\t \t \t }; 
 
</script>

1
$("body").delegate("#my-button", "click", function() { 
    alert(); 
});