Ich weiß, es gibt diese Frage auf multiple inheritance/composition. Es scheint jedoch so zu sein, dass diese Frage mehr dazu dient, die Funktionalität von mehreren vorhandenen Elementen in anderen Elementen wiederzuverwenden. Und die Lösung dafür sind natürlich Mixins.So erweitern Sie mehrere Elemente mit Polymer
Ich würde gerne wissen, wie ich tatsächlich vorhandene Elemente "dekorieren" kann, ohne wirklich Funktionalität von ihnen zu leihen. Wir wissen, dass es diese extends
Eigenschaft gibt, die verwendet werden kann, um ein vorhandenes Element mit Polymer zu erweitern.
So machen Sie eine normale <button>
verhalten sich wie eine mega-button
ist so einfach wie das Anfügen <button is="mega-button">
und schreiben Sie eine Komponente dafür. Aber es stellt sich heraus, dass es nicht möglich ist, mehrere Elemente zu extend
. So etwas wie extends="foo bar"
funktioniert nicht. Was, wenn ich eine Webkomponente erstellen möchte, die tatsächlich auf verschiedene Elemente angewendet werden kann?
Zum Beispiel möchte ich nicht nur <button>
Elemente mit mega-button
verlängern, aber wahrscheinlich auch ein <a>
Element, so dass es so aussieht und verhält sich wie ein zu mega-button
?
Der Mixin-Ansatz hilft hier nicht wirklich (soweit ich es verstehe), weil sie nichts anderes tun, als eine gemeinsame Logik für verschiedene Web-Komponenten bereitzustellen. Das bedeutet, dass Sie mehrere Komponenten erstellen und die Logik (die in einem Mixin gepackt wurde) wiederverwenden.
Was ich brauche, ist ein Weg, eine Web-Komponente zu erstellen, die Elemente mehrere angewendet werden kann.
Irgendeine Idee, wie man das löst?
UPDATE
Addy antwortete mit einigen Ansätzen, dass die Verwendung Fall zu behandeln. Hier ist ein Follow-up Frage basiert auf einem Ansatz
How to find out what element is going to be extended, while registering my own in Polymer
und ein anderer auf Is it possible to share mixins across web components (and imports) in Polymer?
UPDATE 2
Ich habe einen Artikel geschrieben und kommt zu dem Schluss, meine Erfahrungen und Erkenntnisse über die Vererbung und Zusammensetzung mit Polymer: http://pascalprecht.github.io/2014/07/14/inheritance-and-composition-with-polymer/
Ich fand einen anderen Ansatz hier: https://github.com/mvaldetaro/twbs-buttons. Der Autor dieses Projekts stellt eine API zur Verfügung, indem er ein "tag" -Attribut veröffentlicht, mit dem Sie das tatsächliche HTML-Tag angeben können, das verwendet werden soll. In der Webkomponenten-Implementierung sehen Sie, dass er nach verschiedenen Tag-Namen sucht und entsprechend unterschiedliche Vorlageninhalte verwendet. Definitiv * nicht * der Weg meiner Meinung nach. – PascalPrecht