Table des matières

Templates

Ember utilise handlebars pour la partie templates.

Hamdlebars utilise comme beaucoup d'autres moteurs de templates les doubles accolades {{}} pour faire appel aux expressions.

Affichage de variables

Hello, <strong>{{firstName}} {{lastName}}</strong>!

Cette utilisation suppose que les propriétés firstName et lastName aient été définies dans le contrôleur associé :

import Controller from '@ember/controller';

export default Controller.extend({
  firstName: 'Trek',
  lastName: 'Glowacki'
});

Block expressions

Les blocks expressions commencent par {# et se terminent par /}

Itération sur une liste d'éléments {{#each}}

<ul>
  {{#each people as |person|}}
    <li>Hello, {{person.name}}!</li>
  {{/each}}
</ul>

Itération avec utilisation de l'index

<ul>
  {{#each people as |person index|}}
    <li>Hello, {{person.name}}! You're number {{index}} in line</li>
  {{/each}}
</ul>

Itération avec une éventuelle liste vide

{{#each people as |person|}}
  Hello, {{person.name}}!
{{else}}
  Sorry, nobody is here.
{{/each}}

Conditions {{#if}}

Condition sur une seule ligne

<div>
  {{if isFast "zoooom" "putt-putt-putt"}}
</div>

Condition multi-lignes

{{#if person}}
  Welcome back, <b>{{person.firstName}} {{person.lastName}}</b>!
{{/if}}

else

{{#if person}}
  Welcome back, <b>{{person.firstName}} {{person.lastName}}</b>!
{{else}}
  Please log in.
{{/if}}

elseif

{{#if isAtWork}}
  Ship that code!
{{else if isReading}}
  You can finish War and Peace eventually...
{{/if}}

unless

unless est la négation du if (if not)

{{#unless hasPaid}}
  You owe: ${{total}}
{{/unless}}

link-to permet de générer des liens href et prend 1 ou 2 arguments :

Avec la route déclarée dans router.js suivante :

Router.map(function() {
  this.route('photos', function(){
    this.route('edit', { path: '/:photo_id' });
  });
});

et le fichier de template :

<ul>
  {{#each photos as |photo|}}
    <li>{{#link-to "photos.edit" photo}}{{photo.title}}{{/link-to}}</li>
  {{/each}}
</ul>

Ember génère le html :

<ul>
  <li><a href="/photos/edit/1">Happy Kittens</a></li>
  <li><a href="/photos/edit/2">Puppy Running</a></li>
  <li><a href="/photos/edit/3">Mountain Landscape</a></li>
</ul>

Liens inline

A link in {{#link-to "index"}}Block Expression Form{{/link-to}},
and a link in {{link-to "Inline Form" "index"}}.

Génère le code html suivant :

A link in <a href="/">Block Expression Form</a>,
and a link in <a href="/">Inline Form</a>.