【问题标题】:Elm : Pass value to outgoing port from the update functionElm :将值从更新函数传递到传出端口
【发布时间】:2018-10-12 22:30:22
【问题描述】:

我有一个更新功能,可以将Answer 添加到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

【问题讨论】:

    标签: elm ffi elm-port


    【解决方案1】:

    您定义了传出端口签名,但没有正文,如下所示:

    port questionUpdated : Question -> Cmd msg
    

    (假设您有 Question 类型或别名;您的问题没有指定)

    然后,在调用 javascript 中,在调用 Elm init 之后定义端口处理程序:

    var app = Elm.Main.init({ node: document.querySelector('main') })
    app.ports.questionUpdated.subscribe(function(data) {
      // your javascript for handling updated question
    });
    

    要在更新时将新问题值传递给端口,只需将其传递到来自update 的返回类型的第二个值中:

    ( { model | question = updatedQuestion } , questionUpdated updatedQuestion )
    

    【讨论】:

    • 感谢您如此迅速地回复。不幸的是,我的问题问得很糟糕。我想知道,一旦我检查了我有一个问题并用答案updatedQuestion = { question | answer = Just answer } 更新了它 - 我怎样才能将它发送到 emitQuestion 端口,同时也将它保存到模型中?
    猜你喜欢
    • 2014-09-08
    • 1970-01-01
    • 2021-10-26
    • 2023-01-26
    • 1970-01-01
    • 2012-06-21
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多