Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
richclient:emberjs:components [2018/01/26 11:17] – [Personnalisation de la classe css] jcheron | richclient:emberjs:components [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 198: | Ligne 198: | ||
}); | }); | ||
</ | </ | ||
+ | |||
+ | ==== Personnalisation des attributs HTML ==== | ||
+ | |||
+ | La propriété **attributeBindings** permet de définir les attributs du DOM associés au HTML généré : | ||
+ | <sxh javascript> | ||
+ | import Component from ' | ||
+ | |||
+ | export default Component.extend({ | ||
+ | tagName: ' | ||
+ | attributeBindings: | ||
+ | |||
+ | href: ' | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | Il est possible de définir **attributeBindings** à partir d'une propriété du composant : | ||
+ | <sxh javascript> | ||
+ | import Component from ' | ||
+ | |||
+ | export default Component.extend({ | ||
+ | tagName: ' | ||
+ | attributeBindings: | ||
+ | |||
+ | customHref: ' | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ===== Gestion des événements ===== | ||
+ | |||
+ | |||
+ | <sxh html; | ||
+ | {{# | ||
+ | This is a double clickable area! | ||
+ | {{/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Ajout de la prise en charge de l' | ||
+ | <sxh javascript; | ||
+ | import Component from ' | ||
+ | |||
+ | export default Component.extend({ | ||
+ | doubleClick() { | ||
+ | alert(" | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | |||
+ | Pour autoriser la propagation de l' | ||
+ | <sxh javascript; | ||
+ | import Component from ' | ||
+ | |||
+ | export default Component.extend({ | ||
+ | doubleClick() { | ||
+ | alert(" | ||
+ | return true; | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | Voir la liste des [[https:// | ||
+ | |||
+ | ===== Actions ===== | ||
+ | |||
+ | Création d'un composant appelant l' | ||
+ | |||
+ | Générer le composant : | ||
+ | |||
+ | <sxh bash; | ||
+ | ember generate component action-button | ||
+ | </ | ||
+ | |||
+ | |||
+ | Implémenter le template du composant **action-button** : | ||
+ | |||
+ | <sxh html; | ||
+ | <button {{action " | ||
+ | </ | ||
+ | |||
+ | Le template invoque l' | ||
+ | |||
+ | <sxh javascript; | ||
+ | import Ember from ' | ||
+ | |||
+ | export default Ember.Component.extend({ | ||
+ | actions: { | ||
+ | doButtonThing() { | ||
+ | this.sendAction(' | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | |||
+ | Le composant peut maintenant être utilisé dans une route /test : | ||
+ | |||
+ | <sxh html; | ||
+ | {{# | ||
+ | </ | ||
+ | |||
+ | |||
+ | l' | ||
+ | |||
+ | <sxh javascript; | ||
+ | import Route from ' | ||
+ | |||
+ | export default Route.extend({ | ||
+ | actions: { | ||
+ | continue() { | ||
+ | console.log(" | ||
+ | this.replaceWith(' | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | |||
+ |