2016-08-05 31 views
1

In js, wenn handling event mit addEventListener('mousemove',handler), innerhalb der handler, erhalten wir Zugriff auf die this, die Bezug auf das DOM-Element, das wichtige Eigenschaften wie offsetLeft hat.Get offsetLeft on mousemove

Wie dekodiere ich das this Objekt in Ulme, damit ich diese Eigenschaften bekommen kann?

+0

Ich denke, ein Zustand/Wert von DOM ist kein Elm Weg. Ich denke, Sie sollten versuchen, es in Ihr Modell zu bringen und DOM aus dem Modell zu bauen. Event-Handler wird verwendet, um Benutzeraktion, nicht den DOM-Status zu erhalten. – Tosh

+0

Wie setzt man offsetLeft in das Modell? Besser noch, wie setzt man die Browserbreite in das Modell:) – Birowsky

+0

Ich würde 'port' verwenden, um mit Browserereignissen zu reagieren. – Tosh

Antwort

2

Ich bin nicht sicher, was Sie von http://package.elm-lang.org/packages/elm-lang/html/1.1.0/Html-Events#onMouseUp zurück, aber das könnte

Andernfalls Ihren eigenen Event-Handler Sie bauen wie folgt genug sein:

http://package.elm-lang.org/packages/elm-lang/html/1.1.0/Html-Events#on

onMouseMove : msg -> Attribute msg 
onMouseMove message = 
    on "mousemove" (Json.map message (Json.at ["offsetLeft"] Json.int)) 
    -- on "mousemove" (Json.map message (Json.at ["target", "offsetLeft"] Json.int)) 
+0

Ich war mir der 'target' -Eigenschaft innerhalb des js-Ereignisobjekts bewusst, aber leider ist es ein Verweis auf das dom-Element, das das Ereignis erfasst hat, nicht auf das, das darauf hört. Ich brauche einen Verweis auf das Element, das diesem Ereignis zuhört, nämlich "das". – Birowsky