richclient:emberjs:modelobjet:computed

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.

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.

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 Fonction Exemple
and(keys) effectue un ET logique entre les propriétés passées
Ember.computed.equal('percentCarrotsEaten', 100)
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…)
equals(keys) retourne vrai si les valeurs passées et propriétés des valeurs sont égales
  • richclient/emberjs/modelobjet/computed.1516535201.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)