【发布时间】:2016-01-24 16:16:49
【问题描述】:
我在 Elm StartApp MUV 框架的更新函数中有以下 Action 处理程序。
signupAlertMailbox : Signal.Mailbox String
signupAlertMailbox =
Signal.mailbox ""
update : Action -> Model -> (Model, Effects Action)
update action model =
case action of
Submit ->
let isInputValid = Dict.foldl (\fieldName fieldState validity -> if validity
then (fieldState == IsOkay)
else validity)
True model.inputState
rnd = log "Input valid" isInputValid
-- in (model, Effects.none)
in if isInputValid
then (model, Signal.send signupAlertMailbox.address "Oh snap! Change a few things up and try submitting again."
|> Effects.task
|> Effects.map (always Submit))
else (model, Signal.send signupAlertMailbox.address "Well done! All input correct!"
|> Effects.task
|> Effects.map (always Submit))
提交操作后,我可以在浏览器控制台中看到日志消息,但没有消息发送到 signupAlertMailbox。请帮我解决这个问题。
-- 编辑
StartApp 按照以下评论的要求连接代码:
import StartApp exposing (start)
import Time exposing (every, second)
import Pages.Signup.Model
import Pages.Signup.Update exposing (signupAlertMailbox)
import Pages.Signup.View
app =
start
{ init = Pages.Signup.Model.init
, view = Pages.Signup.View.view
, update = Pages.Signup.Update.update
, inputs = []
}
【问题讨论】:
-
你能把你的代码连接到 StartApp 上吗?当
start的返回值没有将app.tasks分配给端口时,通常会出现此类问题 -
我已经添加了连接 StartApp 的代码。请协助我。谢谢。
-
我把 app.tasks 交给了你提到的一个端口,效果很好。谢谢! :)
-
哦,我是 Elm 的新手,仍然理解信号、任务和效果。对不起,重复。
-
别担心!该标志只是标准的 stackoverflow 管理。它为将来可能有类似问题的网站访问者留下了书面记录。
标签: elm