2014-05-14 177 views
5

聚合物網站says聚合物中使用'extend'屬性不支持多重繼承(或合成)。我想要一個元素由一個Polymer元素的一些方法組成,另一個來自另一個Polymer元素,以使其反映應用程序邏輯。目前有什麼方法可以在Polymer中實現? (就像使用javascript mixins做的那樣)聚合物多重繼承/合成

+0

我還想知道,如果不允許多繼承是因爲實現的複雜性或設計決策? – sepans

回答

7

聚合物現在支持混入:

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 

更多信息here

2

我不能說聚合物夥伴的推理,但它通常被認爲優於use composition over inheritance

+0

謝謝,你說得對。但我的意思是同樣的事情,即Polymer中的組成機制是什麼,但是我使用強大的「基於類的繼承」的術語是誤導性的。我會稍微編輯一下問題,使其更加清晰。 – sepans

+0

我也想看到這個問題的答案。我建議發佈另一個問題。 –

0

聚合物支持密新概念用於克服多重繼承的概念。

例子:

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(); 
    } 
} 

我希望這對您有所幫助。