2014-05-14 11 views
5

Polymer Website says Mehrfachvererbung (oder Zusammensetzung) wird nicht unterstützt mit Attribut 'erweitern' in Polymer. Ich möchte, dass ein Element aus einigen Methoden eines Polymer-Elements und einigen anderen aus einem anderen besteht, damit es die Anwendungslogik widerspiegelt. Gibt es derzeit eine Möglichkeit, das in Polymer zu implementieren? (wie das mit Javascript mixins)Polymer mehrfache Vererbung/Zusammensetzung

+0

Ich würde auch gerne wissen, ob eine Mehrfachvererbung wegen der Komplexität der Implementierung oder einer Designentscheidung nicht erlaubt ist? – sepans

Antwort

7

Polymer unterstützt jetzt mixin:

var mixinObj = { 
    foo: function() { 
    /* ... */ 
    } 
}; 

var mixinObj2 = { 
    foo2: function() { 
    /* ... */ 
    } 
}; 


Polymer('my-component', Polymer.mixin({ // Platform.mixin for polymer version < 0.5 
    bar: function() { 

    /* ... */ 
    this.foo(); // all the functions in mixinObjs are now accessible through 'this' 
    this.foo2(); 



    } 


}, mixinObj, mixObj2); // Platform.mixin accepts multiple mixin objects 

Mehr Infos here

2

Ich kann nicht mit der Argumentation der Polymer-Leute sprechen, aber es wird allgemein als use composition over inheritance bevorzugt.

+0

Danke, du hast Recht. Aber ich meinte eigentlich das Gleiche, nämlich die Kompositionsmechanismen in Polymer, aber meine Verwendung einer starken "klassenbasierten Vererbung" war irreführend. Ich werde die Frage leicht bearbeiten, um sie klarer zu machen. – sepans

+0

Ich würde gerne die Antwort auf diese Frage auch sehen. Ich würde empfehlen, eine weitere Frage zu stellen. –

0

Polymer Unterstützung Mixin Konzept um das Konzept der Mehrfachvererbung zu überwinden.

Beispiel:

Class ElementOne extends Polymer.Element { 
    ready() { 
    super.ready(); 
    } 
} 

Class ElementTwo extends Polymer.Element { 
    ready() { 
    super.ready(); 
    } 
} 

Class ElementThree extends ElementOne(ElementTwo(Polymer.Element)) { 
    ready() { 
    super.ready(); 
    } 
} 

Ich hoffe, dass es hilfreich für Sie ist.