2017-04-10 1 views
1

En polymère 1.0, je peux déclarer des propriétés avec:Comment accéder aux 'propriétés' dans Google Polymer 2?

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

maintenant en polymère 2.0 (création d'une classe), je devrais écrire une méthode comme:

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

Mais maintenant this.properties est null. Comment accéder au champ properties (pas aux valeurs du properties)?

Répondre

0

this.properties tente d'accéder à un champ d'instance (exclut les champs statiques). Comme properties est un champ static, vous devez utiliser this.constructor.properties ou XFoo.properties.

Exemple:

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

Très bon! Évidemment, je comprends la différence entre les champs statiques et les champs d'instance: mon problème était d'accéder aux propriétés dans un comportement (dans la nouvelle approche avec les mixins de classe) où je ne peux pas connaître le nom de la classe (dérivée). Pour être clair, en vous référant à votre exemple, je ne peux pas utiliser votre seconde approche, mais la première est parfaite! Merci beaucoup! :-) – Andrea