Vous pouvez rechercher la source Ember.JS pour tous ces éléments en recherchant : Ember.Handlebars.registerHelper('?'
. Par exemple, pour trouver la partie où template
est défini, recherchez : Ember.Handlebars.registerHelper('template')
{template}}
est similaire à la {{partial}}
mais il recherche les modèles que vous définissez dans le champ Ember.TEMPLATES
hachage. Nous pouvons voir un exemple dans le code source : Ember.TEMPLATES["my_cool_template"] = Ember.Handlebars.compile('<b>{{user}}</b>');
et nous pouvons le rendre de cette façon.
J'ai entendu un murmure qui {{template}}
est @deprecated mais je n'arrive pas à trouver où j'ai trouvé cette information pour le moment. Cependant, il est bon de mentionner que je ne me suis jamais retrouvé à utiliser celle-ci. Je préfère {{partial}}
.
Edit : Il semble que ce ne soit pas @deprecated à partir de 3df5ddfd4f
. Je me suis trompé !
{partiellement}}
Ceci est différent de la {{render}}
en ce sens que le controller
y view
sont héritées du contexte qui l'a appelé. Par exemple, si vous êtes dans le contexte UserRoute
et que vous chargez un partiel dans votre modèle d'utilisateur, alors l'option UserView
y UserController
seront tous deux passés à votre partiel, afin qu'ils puissent accéder exactement aux mêmes informations que son parent actuel.
Les noms partiels, lorsqu'ils sont définis, commencent par un trait de soulignement. Par exemple, un Profile
partiel aura le data-template-name
de : data-template-name="_profile"
mais est inséré dans votre vue comme {{partial "profile"}}
.
{sortie}}
Vous vous retrouverez probablement à l'utiliser souvent. Il est principalement utilisé dans les cas où la fonction outlet
change fréquemment, en fonction des interactions avec les utilisateurs. En passant à ( this.transitionTo
/ {{#linkTo}}
) d'une autre page, Ember insère la vue dans la section {{outlet}}
et joint les controller
y view
.
Par exemple, si vous êtes en transition vers /#/pets alors, par défaut, Ember chargera le fichier PetsView
dans le {{outlet}}
et joindre le PetsController
tout cela après avoir initialisé le PetsRoute
pour prendre des instructions avant d'initialiser la vue et de trouver le contrôleur.
{{render}}
Il s'agit d'un mélange d'un {{outlet}}
et un {{partial}}
. Il est utilisé pour les pages statiques qui ne changent pas pour d'autres pages (comme une outlet
mais il n'hérite pas du contrôleur et de la vue (comme le fait un fichier de type partial
fait).
C'est mieux avec un exemple. Disons que vous avez une navigation. Habituellement, vous n'aurez qu'une seule navigation, et elle ne changera pas pour une autre, mais vous voulez que la navigation ait son propre contrôleur et sa propre vue, et ne soit pas héritée du contexte (probablement ApplicationRoute
). Par conséquent, lorsque vous insérez la navigation ( {{render "navigation"}}
), Ember attachera App.NavigationController
y App.NavigationView
.
Résumé
-
template
: Consulte un hachage global et insère la vue lorsqu'il la trouve (peut-être bientôt @deprecated ) ;
-
partial
: Utilisé pour diviser des vues compliquées, et hérite du contrôleur/de la vue du parent (si vous êtes dans la section UserController
alors le partiel aura également accès à cette vue et à la vue qui lui est associée).
-
outlet
: Le plus utilisé, il permet de passer rapidement d'une page à une autre. Contrôleur/vue pertinent(e) joint(e).
-
render
: Similaire à un outlet, mais est utilisé pour les pages qui sont persistantes dans toute l'application. Il suppose que le contrôleur/la vue concerné(e) et n'a pas d'en hériter.
Les ai-je bien expliquées ?
Juste pour clarifier :
- Partiel : Contrôleur hérité, vue héritée, non commutable ;
- Sortie : Contrôleur pertinent, vue pertinente, commutable ;
- Rendu : Contrôleur pertinent, vue pertinente, non commutable ;