作为视图函数的一部分执行本机 functions/javascript
Executing native functions/javascript as part of the view function
我正在尝试找到执行某些 javascript 作为我的视图函数的一部分的最佳方法。在视图函数中,我想创建一个 canvas 对象,然后执行一个本机函数,根据我的模型向其中插入一些数据。 dividual 中的部分似乎很容易编写,但我不确定如何将它们粘合在一起。
如果我只是将本机调用插入到我的视图代码中,大概它必须生成一些 HTML(例如空的 div)以满足类型系统;也许这是正确的做法,但感觉有点老套。有更好、更惯用的方法吗?我是否以正确的 Elm-ish 方式思考这个问题?
我发现的最好方法是在主模块中为此创建一个邮箱:
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
我正在尝试找到执行某些 javascript 作为我的视图函数的一部分的最佳方法。在视图函数中,我想创建一个 canvas 对象,然后执行一个本机函数,根据我的模型向其中插入一些数据。 dividual 中的部分似乎很容易编写,但我不确定如何将它们粘合在一起。
如果我只是将本机调用插入到我的视图代码中,大概它必须生成一些 HTML(例如空的 div)以满足类型系统;也许这是正确的做法,但感觉有点老套。有更好、更惯用的方法吗?我是否以正确的 Elm-ish 方式思考这个问题?
我发现的最好方法是在主模块中为此创建一个邮箱:
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