У меня LV как ..
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
и в 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>
В 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>
Поскольку LV будет монтировать и отправлять evercam_server_branches
на :live_view
, я отображаю только branch_name
, остальные значения будут получены другим методом.
Это в основном Github.branch(repo, branch)
Но я не уверен, где вызвать этот метод и обновить все значения, которые сейчас загружаются на Server
, и я обновлю их значениями, возвращаемыми из метода branch/2
.
Как в начале при загрузке :live_view
. Я просто хочу показать экран с именем ветки и значками загрузки, а затем после получения значений branch/2
обновите сервер.
Я ищу способ, как я могу что-то здесь назвать
defmodule Server do
use Phoenix.LiveComponent
end
и обновить значения Server
?