2017-04-10 5 views
1

In Polymer 1.0, kann ich erklären Eigenschaften mit:Zugriff auf "Eigenschaften" in Google Polymer 2?

properties: { 
    salary: { 
     type: Number, 
     value: 80 
    } 
} 

Jetzt in Polymer 2.0 (Erstellen einer Klasse), sollte ich eine Methode, wie schreiben:

static get properties() { 
    return { 
     salary: { 
      type: Number, 
      value: 80 
     } 
    } 
} 

Aber jetzt ist this.propertiesnull. Wie erreiche ich das Feld properties (nicht die Werte der properties)?

Antwort

0

this.properties versucht, auf ein Instanzfeld zuzugreifen (schließt statische Felder aus). Da properties ein Feld static ist, müssen Sie entweder this.constructor.properties oder XFoo.properties verwenden.

Beispiel:

class XFoo extends Polymer.Element { 
    static get properties() { ... } 

    constructor() { 
    super(); 

    // this.constructor === XFoo 
    console.log('this.constructor.properties', this.constructor.properties); 
    console.log('XFoo.properties', XFoo.properties); 
    } 
} 

codepen

+0

Sehr gut! Offensichtlich verstehe ich den Unterschied zwischen statischen und Instanzfeldern: Mein Problem war der Zugriff auf die Eigenschaften in einem Verhalten (im neuen Ansatz mit Klassen-Mixins), wo ich den Namen der (abgeleiteten) Klasse nicht kennen kann. Um es klar zu sagen, ich kann Ihr zweites Beispiel nicht verwenden, aber das erste ist perfekt! Vielen Dank! :-) – Andrea

Verwandte Themen