EmberJS - Attributs avec didReceiveAttrs

Le hook didReceiveAttrs peut être utilisé après la méthode init et appelé lorsque les attributs du composant sont mis à jour et il ne s'exécutera pas lorsque le nouveau rendu est lancé en interne.

Syntaxe

import Ember from 'ember';

export default Ember.Component.extend ({
   ...
   didReceiveAttrs() {
      //code here    
   },
   ...
})

Exemple

L'exemple ci-dessous décrit l'utilisation du hook didReceiveAttrs à utiliser lorsque les attributs du composant sont mis à jour. Créez un composant avec le nom post-action qui sera défini sous app / components / .

Ouvrez le fichier post-action.js et ajoutez le code suivant -

import Ember from 'ember';

export default Ember.Component.extend ({
   didInitAttrs(options) {
      console.log('didInitAttrs', options);
   },

   didUpdateAttrs(options) {
      console.log('didUpdateAttrs', options);
   },

   willUpdate(options) {
      console.log('willUpdate', options);
   },

   didReceiveAttrs(options) {
      console.log('didReceiveAttrs', options);
   },

   willRender() {
      console.log('willRender');
   },

   didRender() {
      console.log('didRender');
   },

   didInsertElement() {
      console.log('didInsertElement');
   },

   didUpdate(options) {
      console.log('didUpdate', options);
   },
});

Ouvrez maintenant le fichier de modèle de composant post-action.hbs avec le code suivant -

<p>name: {{name}}</p>
<p>attrs.data.a: {{attrs.data.a}} is in console</p>
{{yield}}

Ouvrez le fichier index.hbs et ajoutez le code suivant -

<div>
   <p>appName: {{input type = "text" value = appName}}</p>
   <p>Triggers: didUpdateAttrs, didReceiveAttrs, willUpdate, willRender,
      didUpdate, didRender</p>
</div>

<div>
   <p>data.a: {{input type = "text" value = data.a}}</p>
</div>
<hr>

{{post-action name = appName data = data}}
{{outlet}}

Créez un fichier index.js sous app / controller / avec le code suivant -

import Ember from 'ember';

export default Ember.Controller.extend ({
   appName:'TutorialsPoint',
   data: {
      a: 'output',
   }
});

Production

Exécutez le serveur de braises; vous recevrez la sortie suivante -

Ouvrez la console et vous obtiendrez la sortie comme indiqué dans la capture d'écran ci-dessous -