Question

Polymer website says multiple inheritance (or composition) is not supported using 'extend' attribute in Polymer. I want an element to be composed of some methods from one Polymer element, and some others from another, to have it reflect application logic. Is there currently any way to implement that in Polymer? (like doing that using javascript mixins)

Was it helpful?

Solution

Polymer now supports 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

More info here

OTHER TIPS

I can't speak to the reasoning of the Polymer folks, but it's generally considered preferable to use composition over inheritance.

Polymer support Mixin concept for overcome the Multiple inheritance concept.

Example :

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

I hope it's helpful to you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top