来自 JavaScript 的传入数据正在通过订阅进行。

榆树边

首先,我们需要使用以下语法定义传入端口:

port input : (Int -> msg) -> Sub msg

如果我们有多个订阅,我们可以使用 Sub.batch,这个例子只包含一个订阅 input port

subscriptions : Model -> Sub Msg
subscriptions model =
    input Get

然后你必须将 subscriptions 传递给你的 Html.program

main =
    Html.program
        { init = init
        , view = view
        , update = update
        , subscriptions = subscriptions
        }

JavaScript 方面

初始化应用程序:

var root = document.body;
var app = Elm.Main.embed(root);

发送消息给榆树:

var counter = 0;
        
document.body.addEventListener('click', function () {
    counter++;
    app.ports.input.send(counter);
});

注意

请注意,从 0.17.0 开始,应用初始化后的即时 app.ports.input.send(counter); 将无效!

使用 Html.programWithFlags 将启动时所需的所有数据作为 Flags 传递