ビューが更新された後にCmd
を実行する簡単な方法はありますか?特に、私はtextarea
の特定のキー(Enterキーのような)が押された時にカーソルの位置を変えようとしています。私のupdate
機能では私が持っている:Elmでビューの後にポートを呼び出す
case keyboardEvent.key of
"Enter" ->
(modelAfterEnterPressed model keyboardEvent.selectionStart, setCursor model.cursor)
"Tab" ->
....
マイsetCursor
ポートが呼び出され、対応するJavaScriptコードが正しくtextarea
のsetSelectionRange
関数を呼び出します。そしてそして Elmはtextarea
の内容を更新する私のview
関数を呼び出します。残念ながら、それは私のカーソル位置を拭き取ります。
textarea
のコンテンツをの前に更新する必要があります。 JavaScriptポートにtextarea.setSelectionRange()
を呼び出す前に。 setTimeout
に頼らずにこれを行う方法は、いつもうまくいかず、タイムアウト内で点滅する可能性がありますか?
Elmには、実際には 'requestAnimationFrame()'のための組み込みのサブスクリプション機能があります:http://package.elm-lang.org/packages/elm-lang/animation-frame/latest/AnimationFrame。私の懸案事項は、型付きキーは、最初の 'KeyboardEvent'と次のアニメーションフレームの間で登録/処理できるということでした。それはすべてを捨てるだろう。 –