문제

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)

도움이 되었습니까?

해결책

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

다른 팁

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top