2017-04-02 2 views
1

Ich versuche, ein Mixin für eine Polymer 2.0-Komponenten (klassenbasierte Syntax) mit etwas wie unten zu erstellen. Gibt es eine Möglichkeit, die Optionen an die Klasse zu übergeben, so wie ich es gerade mache?Übergeben von Argumenten an eine Klasse

Polymer Elementdefinition mit dem mixin:

class PodcastListView extends PolymerApolloBehavior(Polymer.Element, myOptions) { 
    //some code 
} 

Die mixin Klasse:

export const PolymerApolloBehavior = (superclass, options) => class extends superclass { 
    constructor() { 
     console.log(options); 
    } 
} 

Antwort

1

Ich kann Ihnen für Ihre PodcastListView Klasse fungieren-Wrapper vorschlagen, wird ein neues macht mit neuem Verhalten. Es wird wie folgt aussehen:

export const PolymerApolloBehavior = (original, options) => { 
    let result = Object.assign({}, original) 
    const originalConstructor = result.prototype.constructor 
    result.prototype.constructor =() => { 
    console.log(options) // your behavior 
    originalConstructor() // original constructor 
    } 
    // any changes of class 
    return result 
} 

Und jetzt können Sie Ihr neues Verhalten gelten:

export default PolymerApolloBehavior(PodcastListView, {behaviorOptions}) 
Verwandte Themen