我正在尝试找到执行某些javascript的最佳方式,作为我的视图功能的一部分。在view函数中,我想创建一个canvas对象,然后执行一个本机函数,根据我的模型将一些数据插入其中。单独的部件似乎很容易写,但我不知道如何将它们粘在一起。
如果我只是将原生调用插入到我的视图代码中,可能必须生成一些HTML(例如空div)以满足类型系统;也许这是正确的事情,但感觉有点hackish。有更好,更惯用的方式吗?我是否以正确的Elm-ish方式思考这个问题?
答案 0 :(得分:1)
我找到的最好的方法是在主模块中为此创建一个邮箱:
messageMailbox : Signal.Mailbox String
messageMailbox =
Signal.mailbox ""
然后创建一个端口来侦听来自该邮箱的信号:
port messsagePort : Signal String
port messsagePort =
messageMailbox.signal
在Js中,您订阅了此端口:
app.ports.messsagePort.subscribe(function (args) {
...
})
然后从您的视图或更新功能向此邮箱发送消息(作为更新时的效果):
Signal.send messageMailbox.address message