傳出

傳出埠用作命令,你可以從 update 函式返回。

榆樹邊

定義傳出埠:

port output : () -> Cmd msg

在這個例子中,我們傳送一個空的 Tuple,只是為了在 JavaScript 端觸發訂閱。

為此,我們必須應用 output 函式和空元組作為引數,以獲取命令以從 Elm 傳送傳出資料。

update msg model =
    case msg of
        TriggerOutgoing data ->
            ( model, output () )

JavaScript 方面

初始化應用程式:

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

訂閱具有相應名稱的埠:

app.ports.output.subscribe(function () {
    alert('Outgoing message from Elm!');
});

注意

0.17.0 開始,從你的 initial 狀態直接傳送到 JavaScript 的訊息將不起作用。

init : ( Model, Cmd Msg )
init =
    ( Model 0, output () ) -- Nothing will happen

請參閱下面示例中的解決方法。