2016-06-18 54 views
0

In update我想打電話給我的Tick每次調用Input時都會調用InputElm:將當前時間作爲效果傳遞給Tick Action,更新後

該方案是用戶在文本字段中輸入值,更新時通過Input更新模型,然後調用Tick並在模型上執行更多內容。

在0.16我可以做這樣的事情:

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

Tick clockTime -> 
    -- do something with clockTime 

我不知道如何在0.17做到這一點。

我不確定這是否會是subscription,如果是這樣,您可以如何配置它以調用Input then Action。

任何幫助表示讚賞。

+0

可能重複的[Effects.tick替換爲elm 0.17](http://stackoverflow.com/questions/37196357/effects-tick-replacement-for-elm-0-17) –

回答

2

檢索當前時間作爲效果的功能已移入TaskTime模塊Time.now中。

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)更換Effects.tick TickTime.nowTask.perform

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

如果你不喜歡還有其他方法,比如使用Debug.crashperformFailproof from Task.Extra(在這裏找到:http://package.elm-lang.org/packages/NoRedInk/elm-task-extra/2.0.0/Task-Extra#performFailproof

+0

這正是我所追求的,所以如果我的問題不清楚,我很抱歉。謝謝。 –

相關問題