如何在 Phoenix LiveView 中使用量子触发 handle_event 函数

问题描述 投票:0回答:0

我有一个 Quantum(Quantum 是 Elixir 的 cron 作业样式代码调度程序和模块)定时事件,我想每分钟执行 LiveView handle_event 函数内的操作。 handle_event 函数采用三个参数,它们在配置页面中不可用。我不能传递不存在的参数。

简而言之,我该怎么做该代码试图执行的操作:

config.ex 量子密码:

config :app, App.Scheduler,
  jobs: [
    # Every minute
    {"* * * * *",      {AppWeb.PageLive, :handle_event, ["add"]}}, 
 
  ]

模块代码

defmodule AppWeb.PageLive do
   use AppWeb, :live_view 
   alias App.Periodically
   def mount(_params, _session, socket)  do

     {:ok, assign(socket, run_timer: 0)} 

   end
   

   def handle_event("add",_params, socket) do 
    
     {:noreply, assign(socket, run_timer: socket.assigns.run_timer + 1)}
    end

   def render(assigns) do

       ~H"""
            <%= assigns.run_timer %>
            <.button phx-click="add">Add</.button>
       """ 
   end

end

单击按钮时,上面的代码会增加一个计数器。我想使用 Quantum 来触发一般的 handle_event 内部——它可以做任何事情。我创建了一个运行其他功能的工作尖峰测试,而不是我想要的特定事件。

App.Scheduler代码在这里:

defmodule App.Scheduler do
  use Quantum, otp_app: :app
end

谢谢!

elixir phoenix-framework phoenix-live-view
© www.soinside.com 2019 - 2024. All rights reserved.