[英]how to update LiveComponent from LiveView Phoenix
I have a LV as..我有一个LV作为..
page_live.ex page_live.ex
defmodule EverdeployWeb.PageLive do
use EverdeployWeb, :live_view
def mount(_params, session, socket) do
if connected?(socket), do: send(self(), :add_branches)
{:ok, assign(socket, current_user: session["current_user"], evercam_server_branches: [], loading: true)}
end
def handle_info(:add_branches, socket) do
{:noreply, assign(socket, evercam_server_branches: Github.branches("evercam-server2"), loading: false)}
end
end
and in html.leex I have在 html.leex 我有
<section id="cd-timeline" class="cd-container">
<%= if @loading, do: "loading", else: "" %>
<%= for branch <- @evercam_server_branches do %>
<%= live_component @socket, Server, id: branch.sha, branch: branch %>
<% end %>
</section>
In the Server
LiveComponent
I have在
Server
LiveComponent
我有
<div class="cd-timeline-block">
<div class="cd-timeline-img cd-picture">
loading
</div>
<div class="cd-timeline-content">
<h2><%= @branch.branch_name %></h2>
<p>loading</p>
<a href="#0" class="cd-read-more">Deploy</a>
<span class="cd-date">loading</span>
</div>
</div>
As the LV will mount and send evercam_server_branches
to :live_view
I am only displaying the branch_name
the other values will come from an other method.由于 LV 将挂载
evercam_server_branches
并将其发送到:live_view
我只显示branch_name
其他值将来自其他方法。
Which is basically, Github.branch(repo, branch)
But I am not sure where to call this method and update all values which are loading right now on Server
and I will update them will values returned from the branch/2
method.这基本上是
Github.branch(repo, branch)
但我不确定在哪里调用此方法并更新所有正在加载的值,现在在Server
上,我将更新它们将从branch/2
方法返回的值。
As In start when :live_view
load.与
:live_view
加载时一样。 I just want to show a screen with a branch name and loading icons, and then after getting the branch/2
values update the Server.我只想显示一个带有分支名称和加载图标的屏幕,然后在获取
branch/2
值后更新服务器。
I am looking for way, how I can call something here我正在寻找方法,我怎么能在这里打电话
defmodule Server do
use Phoenix.LiveComponent
end
and update the Server
values?并更新
Server
值?
You may call update function with timer in "mount", check:您可以使用“mount”中的计时器调用更新 function,检查:
https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#connected?/1-examples https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#connected?/1-examples
next, you'll need to update each component via send_update/2
https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#send_update/2接下来,您需要通过
send_update/2
https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#send_update/2更新每个组件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.