2016-06-18 4 views
0

updateInputが呼び出されるたびに私はTickに電話したいと思います。Elm:モデル更新後、Tickアクションに現在の時刻を渡します。

ユーザがテキストフィールドに値を入力すると、更新時にモデルがInputで更新され、Tickが呼び出され、モデルでより多くの処理が実行されるというシナリオです。

0.16で私はこのような何かができる:

Input query -> 
    ({ model | query = query }, Effects.tick Tick) 

Tick clockTime -> 
    -- do something with clockTime 

私は0.17でこれを行うするかどうかはわかりません。

これがsubscriptionであるかどうかわかりませんが、入力してからアクションを呼び出すように設定するにはどうすればいいでしょうか。

何か助けていただければ幸いです。

+0

[Elm 0.17のEffects.tick置換の可能な複製](http://stackoverflow.com/questions/37196357/effects-tick-replacement-for-elm-0-17) –

答えて

2

現在の時刻をエフェクトとして取得する機能は、モジュールのTime.nowTaskに移動されました。

http://package.elm-lang.org/packages/elm-lang/core/4.0.1/Time#now

次の変更を加えることで、あなたの機能を再現することができます

1)あなたのメッセージに利用できるNoOpメッセージがあることを確認してください。 Time.nowは、私たちが失敗することはありません知っているTaskを返しますが、我々はまだあなたが好きではない場合Task.perform

type Msg 
    = Input String 
    | Tick Time 
    | NoOp 

2)Time.nowEffects.tick TickTask.perform

Input query -> 
    ({ model | query = query } 
    , Time.now |> Task.perform (\_ -> NoOp) Tick 
) 

を置き換えるために手に失敗メッセージを必要としますNoOpメッセージの場合、Debug.crashまたはperformFailproofからTask.Extra(ここにある:http://package.elm-lang.org/packages/NoRedInk/elm-task-extra/2.0.0/Task-Extra#performFailproof)の

を使用するなど、他の方法があります。
+0

これはまさに私が後にしたものですが、私の質問がはっきりしない場合はお詫び申し上げます。ありがとうございました。 –

関連する問題