连接端口和订阅时出现问题

连连看约翰

我正在阅读Elm指南及其JavaScript interOp。这是一个简化的版本:

port module FooBar exposing (..)

import Html exposing (..)
import Html.Attributes exposing (..)
import Html.App as Html
import String

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

-- subscriptions
port f : () -> Cmd msg
port g : ( Int -> msg ) -> Sub msg

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

-- MODEL
type alias Model = { pt :  Int }

-- VIEW
view: Model -> Html Msg
view model = Html.text ( toString model.pt )

-- UPDATE
type Msg = Ask | Get Int

update: Msg -> Model -> (Model, Cmd msg)
update msg model =
  case msg of
    Ask  -> (model, f () )
    Get x -> ( Model x, Cmd.none )

-- INIT
init: (Model, Cmd Msg)
init = ( Model 0, f ())

该应用程序最初设置为0,但应从JavaScript读取消息并设置为1但是,它保持为0Elm端口是否设置正确?

<div id="foobar"></div>
<script src="foo.js"></script>
<script>
  var node = document.getElementById("foobar");
  var app  = Elm.FooBar.embed(node);

  app.ports.f.subscribe(
    function(){
      var myValue = 1;
      console.log(myValue);
      app.ports.g.send(myValue);
    }
  );
</script>

</body>

我在这里放: elm-make foo.elm --output=foo.js

myValue打印到控制台为1的事实表明该f()端口已被调用,但该g()端口从未被发送回或未正确处理。

半斑马

很难说这是否是一个设计决定,但是initHtml.App订阅任何端口之前调用

因此,f ()发出呼叫init将无效。

我使用send函数,该函数运行一个虚拟任务并始终发送Ask消息,这将触发传出端口。

考虑更改您init的发送消息,该消息会将数据发送到端口:

-- INIT


init : ( Model, Cmd Msg )
init =
    -- ( Model 0, f ())
    ( Model 0, send Ask )


send : msg -> Cmd msg
send msg =
  Task.perform identity identity (Task.succeed msg)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连接端口和订阅时出现问题

来自分类Dev

连接到 mysql wamp 和 django 时出现问题?

来自分类Dev

连接服务时出现问题

来自分类Dev

表格连接时出现问题

来自分类Dev

条带:在订阅上设置关联帐户时出现问题

来自分类Dev

启动串行端口PCI卡时出现问题

来自分类Dev

在 Ubuntu 16.04 上打开端口时出现问题

来自分类Dev

使用python和selenium连接到phantomJs Webdriver时出现问题

来自分类Dev

使用Firebase函数和Express连接到socket.io时出现问题

来自分类Dev

使用DataContext文件和webConfig文件将Web App与localdb连接时出现问题

来自分类Dev

在流星/铁路由器中发布和订阅产品详细信息属性时出现问题

来自分类Dev

使用ring / compojure连接Clojure nREPL时出现问题

来自分类Dev

连接到Mysql服务器时出现问题

来自分类Dev

将Snowflake连接到DataFactory时出现问题

来自分类Dev

连接到Firebase时Flutter中的地图出现问题

来自分类Dev

连接到Firebase时Flutter中的地图出现问题

来自分类Dev

使用C#连接到Oracle时出现问题

来自分类Dev

使用方法建立连接时出现问题

来自分类Dev

用同理心连接MSN时出现问题

来自分类Dev

在Lubuntu 14.04上连接wifi时出现问题

来自分类Dev

使用ring / compojure连接Clojure nREPL时出现问题

来自分类Dev

连接到Mysql服务器时出现问题

来自分类Dev

通过HTTPS连接到MobileFirst Server时出现问题

来自分类Dev

连接到我学校的wifi时出现问题

来自分类Dev

使用通用协议端口进行端口转发时可能出现问题?

来自分类Dev

预处理器出现问题-将“名称”和“ =“作为标记连接在一起时

来自分类Dev

创建具有ODBC数据源和TLS的SQL Server 2014连接时出现问题

来自分类Dev

连接到我的NodeJs服务器套接字和打字稿时出现问题

来自分类Dev

MVC4和KendoUI网格。连接到数据源时出现问题(KendoUI开源)

Related 相关文章

  1. 1

    连接端口和订阅时出现问题

  2. 2

    连接到 mysql wamp 和 django 时出现问题?

  3. 3

    连接服务时出现问题

  4. 4

    表格连接时出现问题

  5. 5

    条带:在订阅上设置关联帐户时出现问题

  6. 6

    启动串行端口PCI卡时出现问题

  7. 7

    在 Ubuntu 16.04 上打开端口时出现问题

  8. 8

    使用python和selenium连接到phantomJs Webdriver时出现问题

  9. 9

    使用Firebase函数和Express连接到socket.io时出现问题

  10. 10

    使用DataContext文件和webConfig文件将Web App与localdb连接时出现问题

  11. 11

    在流星/铁路由器中发布和订阅产品详细信息属性时出现问题

  12. 12

    使用ring / compojure连接Clojure nREPL时出现问题

  13. 13

    连接到Mysql服务器时出现问题

  14. 14

    将Snowflake连接到DataFactory时出现问题

  15. 15

    连接到Firebase时Flutter中的地图出现问题

  16. 16

    连接到Firebase时Flutter中的地图出现问题

  17. 17

    使用C#连接到Oracle时出现问题

  18. 18

    使用方法建立连接时出现问题

  19. 19

    用同理心连接MSN时出现问题

  20. 20

    在Lubuntu 14.04上连接wifi时出现问题

  21. 21

    使用ring / compojure连接Clojure nREPL时出现问题

  22. 22

    连接到Mysql服务器时出现问题

  23. 23

    通过HTTPS连接到MobileFirst Server时出现问题

  24. 24

    连接到我学校的wifi时出现问题

  25. 25

    使用通用协议端口进行端口转发时可能出现问题?

  26. 26

    预处理器出现问题-将“名称”和“ =“作为标记连接在一起时

  27. 27

    创建具有ODBC数据源和TLS的SQL Server 2014连接时出现问题

  28. 28

    连接到我的NodeJs服务器套接字和打字稿时出现问题

  29. 29

    MVC4和KendoUI网格。连接到数据源时出现问题(KendoUI开源)

热门标签

归档