來自 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 傳遞