0

lib/live_beats_web/views/layout_view.ex 中有一个函数 sidebar_account_dropdown/1

def sidebar_account_dropdown(assigns) do
    ~H"""
    <.dropdown id={@id}>
      <:img src={@current_user.avatar_url}/>
      <:title><%= @current_user.name %></:title>
      <:subtitle>@<%= @current_user.username %></:subtitle>

      <:link navigate={profile_path(@current_user)}>View Profile</:link>
      <:link navigate={Routes.settings_path(Endpoint, :edit)}>Settings</:link>
      <:link href={Routes.o_auth_callback_path(Endpoint, :sign_out)} method={:delete}>Sign out</:link>
    </.dropdown>
    """
end

并在其模板部分中来自 lib/live_beats_web/live/live_helpers.ex 的下拉功能

def dropdown(assigns) do
    assigns =
      assigns
      |> assign_new(:img, fn -> nil end)
      |> assign_new(:title, fn -> nil end)
      |> assign_new(:subtitle, fn -> nil end)

    ~H"""
    <!-- User account dropdown -->
    <div class="px-3 mt-6 relative inline-block text-left">

只是为了不拉长东西我削减了长下拉功能 dropdown/1

我想知道html标签是如何被原子替换的。它是否用作为我们的分配中存在的 :img、:title、:subtitle 等赋值的一种手段,它们是 nil 或其他东西。我很想清楚地理解这一点

4

1 回答 1

1

Phoenix Liveview为sigil_H/1.

引擎有自己的分词器,可以理解<.打开,将其视为插槽并进一步处理。

于 2022-02-10T06:32:17.290 回答