是否可以使用elm-html在一个事件上发送多条消息?
发布时间:2020-12-14 23:28:05 所属栏目:资源 来源:网络整理
导读:我想在一个事件上向不同的地址发送两条消息. 我遇到的特殊情况是我有一些弹出窗口,当用户点击“添加”时我想: 关闭弹出窗口(消息发送到弹出窗口组件) 通知父组件应该添加项目(消息发送到父组件) onClick有以下类型“地址a – a – 属性”,似乎没有可能这样
我想在一个事件上向不同的地址发送两条消息.
我遇到的特殊情况是我有一些弹出窗口,当用户点击“添加”时我想: >关闭弹出窗口(消息发送到弹出窗口组件) onClick有以下类型“地址a – > a – >属性”,似乎没有可能这样做.另一方面,似乎在实践中经常遇到这样的模式(导致多个消息的一个动作). 现在,我使用一条消息通知父母有关添加的项目,然后在更新功能更新弹出窗口中显示隐藏操作. addButton = button [onClick context.addTaskAddress model.taskDescription] [text "Add"] 然后在父级的组件更新功能中 popup = AddTaskPopup.update AddTaskPopup.Hide model.popup 解决方法
您可以设置一个中间代理邮箱,其中包含地址和消息对的列表,然后通过单击按钮调用该邮箱.
proxy : Mailbox (List (Address a,a)) proxy = mailbox [] 然后你可以有一个广播信号,它监听代理邮箱并创建一堆Signal.send任务来通知其他地址. port broadcast : Signal (Task x (List ())) port broadcast = let tasks = List.map (uncurry Signal.send) in Signal.map (Task.sequence << tasks) proxy.signal 您的onClick代码将看起来像这样,您传入地址和操作对列表: onClick proxy.address [(address,Action1),(address,Action2)] 请注意,在上面的代码中,address是指进入view函数的地址,而proxy.address是指我们刚设置的代理邮箱. 这是一种适用于任意数量信号的通用解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |