简体   繁体   中英

Render different live template name in Phoenix LiveView

In a regular controller/view, let's say I have AppWeb.ItemView , and AppWeb.ItemController . Let's say I have two different indexes, :index and :index_funky . If I wanted to render index.html.eex for the :index_funky view, I could create a render function in AppWeb.ItemView with the head render("index_funky.html", assigns) and inside that do a render("index.html", assigns) . That works fine: I would get the data from AppWeb.ItemController.index_funky using the template from AppWeb.ItemController.index .

How can I do the same with a LiveView ? If I have AppWeb.ItemLive.Index and AppWeb.ItemLive.IndexFunky , how can I render index.html.leex for AppWeb.ItemLive.IndexFunky ?

Not sure about your reason behind it, but I would encourage you to look at handle_params if it helps your case.

Now, for your case, you can delegate to an existing view like this

defmodule AppWeb.ItemLive.IndexFunky do
  use AppWeb, :live_view

  def render(assigns) do
    Phoenix.View.render(AppWeb.ItemLive.Index, "index.html", assigns)
  end
end 

Documentation

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM