Elm:将值从更新函数传递到传出端口
我有一个更新功能,可以将Elm:将值从更新函数传递到传出端口,elm,ffi,elm-port,Elm,Ffi,Elm Port,我有一个更新功能,可以将答案添加到问题 一旦问题更新为答案,我想将其发送到一个传出端口,同时更新我的模型 port emitQuestion : Question -> Cmd msg update msg model = AnswerQuestion answer -> case model.question of Nothing -> ( model, Cmd.none) Just question ->
答案
添加到问题
一旦问题更新为答案,我想将其发送到一个传出端口,同时更新我的模型
port emitQuestion : Question -> Cmd msg
update msg model =
AnswerQuestion answer ->
case model.question of
Nothing ->
( model, Cmd.none)
Just question ->
let
updatedQuestion =
{ question | answer = Just answer }
in
( { model | question = updatedQuestion } , Cmd.none)
在这种情况下,如何将
updatedQuestion
传递给emitQuestion
?您定义了传出端口签名,但没有正文,如下所示:
端口问题更新:问题->命令消息
(假设您有一个问题
类型或别名;您的问题没有指定)
然后,在调用javascript时,在调用Elminit
之后定义端口处理程序:
var-app=Elm.Main.init({node:document.querySelector('Main')})
app.ports.questionUpdated.subscribe(函数(数据)){
//用于处理更新问题的javascript
});
要在更新时将新的问题值传递到端口,只需在update
返回类型的第二个值中传递它:
( { model | question = updatedQuestion } , questionUpdated updatedQuestion )
谢谢你这么快的回复。不幸的是,我问得不好。我想知道,一旦我检查了,我有一个问题,并用答案更新了它
updatedQuestion={question | answer=Just answer}
-我如何将它发送到emitQuestion端口,同时将它保存到模型?