2016-08-05 10 views
1

に、我々はoffsetLeftのような重要な特性を持つDOM要素への参照を保持しているthisへのアクセスを取得します。取得offsetLeftはJSでのMouseMove

にはどうすればいいので、私はこれらのプロパティを取得することができニレでthisオブジェクトをデコードするのですか?

+0

DOMから状態/値を取得することは、エルムの方法ではないと思います。私はそれをあなたのモデルに入れ、モデルからDOMを構築しようとするべきだと思います。イベントハンドラは、DOMの状態ではなく、ユーザアクションを取得するために使用されます。 – Tosh

+0

どのようにoffsetLeftをモデルの中に入れますか?もっと良い方法ですが、ブラウザの幅をモデルにどのように入れますか): – Birowsky

+0

ブラウザのイベントに反応するのに 'port'を使います。 – Tosh

答えて

2

次のようにそうでなければ、あなたがあなた自身のイベントハンドラを構築し、私はあなたがhttp://package.elm-lang.org/packages/elm-lang/html/1.1.0/Html-Events#onMouseUpから取り戻すかわからないんだけどそれは

十分かもしれません:

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

私はjsイベントオブジェクトの中の 'target'プロパティを知っていましたが、残念ながらそれを聴いたのではなくイベントをキャプチャしたdom要素への参照です。私は、そのイベントを聞く要素への参照が必要です。これは 'this'です。 – Birowsky

関連する問題