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时,在调用Elm
init
之后定义端口处理程序:

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端口,同时将它保存到模型?