Ceci est une ancienne révision du document !
Computed properties
Pour faire simple, les computed properties permettent de déclarer des fonctions en tant que propriétés. Une computed property est déclarée en tant que fonction, qu'Ember appellera automatiquement lorsque la propriété sera sollicitée.
Une computed property est utilisable de la même manière que toute autre propriété statique normale.
Déclaration
Création de la computed property fullName sur la classe personne :
import EmberObject, { computed } from '@ember/object'; Person = EmberObject.extend({ // these will be supplied by `create` firstName: null, lastName: null, fullName: computed('firstName', 'lastName', function() { let firstName = this.get('firstName'); let lastName = this.get('lastName'); return `${firstName} ${lastName}`; }) }); let ironMan = Person.create({ firstName: 'Tony', lastName: 'Stark' }); ironMan.get('fullName'); // "Tony Stark"
Dans ce cas, la propriété fullName sera automatiquement mise à jour sur les changements de firstName ou lastName.
Macros
Certain types de computed properties sont très communs et disposent de macros permettant d'éviter leur réécriture.
Le cas suivant illustre la computed property macro equals :
import EmberObject, { computed } from '@ember/object'; import { equal } from '@ember/object/computed'; Person = EmberObject.extend({ fullName: 'Tony Stark', isIronManLongWay: computed('fullName', function() { return this.get('fullName') === 'Tony Stark'; }), isIronManShortWay: equal('fullName', 'Tony Stark') });
Macro exemple | Rôle |
---|---|
and(keys) | effectue un ET logique entre les propriétés passées |
bool(keys) | convertit en booléen les propriétés |
collect(keys) | retourne un tableau des valeurs des propriétés |
empty(keys) | retourne vrai si les propriétés passées sont vides (null, chaîne vide, tableau vide…) |
Ember.computed.equal('percentCarrotsEaten', 100) | retourne vrai si percentCarrotEaten est égal à 100 |