richclient:emberjs:templates:actions

Ceci est une ancienne révision du document !


Actions

L'ajout du helper {{action}} déclenche, sur intervention de l'utilisateur, l'action déclarée dans le composant associé au template (component, controller ou route).

Appel d'une action dans le template d'un component :

app/templates/components/single-post.hbs
1
2
3
4
<h3><button {{action "toggleBody"}}>{{title}}</button></h3>
{{#if isShowingBody}}
  <p>{{{body}}}</p>
{{/if}}

Implémentation de l'action correspondante dans la partie js du component :

app/components/single-post.js
1
2
3
4
5
6
7
8
9
import Component from '@ember/component';
 
export default Component.extend({
  actions: {
    toggleBody() {
      this.toggleProperty('isShowingBody');
    }
  }
});

Il est possible de passer des arguments à une action. Tous les arguments situés après le nom de l'action dans l'appel du helper {{action}} seront passés à la fonction correspondant à l'action (action handler).

Exemple :

L'argument post est passé à l'action select

<p><button {{action "select" post}}>✓</button> {{post.title}}

La méthode select utilise l'argument post :

app/components/single-post.js
1
2
3
4
5
6
7
8
9
import Component from '@ember/component';
 
export default Component.extend({
  actions: {
    select(post) {
      console.log(post.get('title'));
    }
  }
});

Il est possible de préciser l'évènement déclencheur de l'action :

1
2
3
4
<p>
  <button {{action "select" post on="mouseUp"}}>✓</button>
  {{post.title}}
</p>

Il est d'utiliser mut pour éviter la création d'une action de modification de valeur :

1
2
3
4
5
<select onchange={{action (mut model.value) value="target.value"}}>
        {{#each model.values as |val|}}
          <option value="{{val.id}}">{{val.text}}</option>
        {{/each}}
</select>

  • richclient/emberjs/templates/actions.1520904316.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)