2017-01-14 1 views
2

Y a-t-il une fonction dans purescript-halogen pour sélectionner un élément par id, ou dois-je le personnaliser (ce qui me semblerait très étrange).Sélection des éléments par ID dans Purescript

Je suis en train de lire la documentation sur Poursuite, et je vois une fonction selectElement dans Util, mais nulle part je ne vois quelque chose qui me permet de sélectionner par id.

Je peux utiliser getElementById :: ElementId -> NonElementParentNode -> Eff() (Nullable Element) pour obtenir une Element, mais je ne sais pas comment transformer ce Element en un HTMLElement.

La fonction de recherche de type dans Pursuit fait également défaut, alors je m'excuse pour cette question naïve.

+0

Vous ne pouvez pas tourner 'Element' en toute sécurité dans' HTMLElement'. Essayez 'selectElement" #id "'. Mais le meilleur moyen est de changer 'HTMLElement' en' Node' dans la signature de 'Halogen.VDom.Driver.runUI' car halogène n'a pas besoin de' HTMLElement' plus tard. –

Répondre

2

Ce n'est pas quelque chose que vous devriez faire en général avec des bibliothèques qui utilisent un DOM virtuel, car si vous enregistrez une référence à un élément par id, il peut devenir obsolète et se référer à un élément totalement différent. ce n'est plus attaché au DOM.

La façon d'obtenir un élément est d'utiliser ref, il y a un exemple de l'utiliser in this section of the guide. Cela fonctionne quelque chose comme un gestionnaire d'événements, où une requête est levée sur le composant à chaque fois que l'élément existe ou est supprimé. Si vous utilisez une requête qui met à jour une référence dans l'état du composant, vous pouvez être sûr de savoir que vous avez toujours l'élément réel que vous voulez (ou Nothing s'il n'existe pas pour une raison quelconque).

Si vous vraiment souhaitez utiliser getElementById puis it is available from purescript-dom. Il ne fait pas partie d'Halogen, car Halogen n'est pas destiné à la manipulation DOM générale. Ces fonctions utilitaires ne sont fournies que pour faciliter l'initialisation d'une application Halogen.