Turns out nesting multiple views is not very convenient, as some functions (e.g. handle_params) are not available on child views. Overall, this nested structure requires a lot of data passing between different views/components.
The approach was changed to use templates.
In each live view use MyAppWeb, :live_view
is used to load the template. It can be found in lib/my_app_web.ex
and will load lib/my_app_web/templates/live.html
.
Simply duplicate the existing live_view
, rename to e.g. my_live_view
.
Duplicate the live template and add the top and side menu as components. Load this template in my_live_view
. Then, in your MyAppWeb.MyLive
use this template with use MyAppWeb, :my_live_view
.
This way, no nested live views are needed, but there is still the option for multiple side menus, by simply loading different templates.