问题标签 [phoenix-live-view]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ubuntu - wxWidgets安装后找不到wxWebView
背景
我正在尝试运行desktop-example-app
Elixir Berlin 2021 年 2 月聚会上展示的演示应用程序:
我已按照 Ubuntu 安装指南中的所有必要设置步骤进行操作:
我在项目中通过 asdf 安装了其余的依赖项:
问题
据我所知,安装没有任何问题。但是,当我执行脚本./run
以启动应用程序时,我收到以下错误:
我已经安装了 wxWidgets,但它似乎找不到它。这是我的操作系统版本:
我该如何解决这个问题?
编辑
我试着检查我是否webkitgtk
安装了,但显然我没有。即使它似乎存在于以下位置,我也找不到该包packages.ubuntu.com
:
这令人困惑,因为显然包的名称应该是正确的: https ://packages.ubuntu.com/search?searchon=sourcenames&keywords=webkitgtk
elixir - 根据一个 PubSub 事件更新所有 Phoenix LiveView 套接字
假设我们有一个 Phoenix LiveView 应用程序订阅了一些通知。所有 LiveView 都通过_header.html.eex
模板以及菜单和其他内容显示带有图标的新通知数量。
为了使所有 LiveView 中的通知图标保持最新,应该有一些机制来订阅 PubSub 并实时更新套接字分配。
有没有一种方法可以全局更新所有这些,而不必handle_info
在每个 LiveView 中剪切粘贴相同的内容?
elixir - Phoenix LiveView 嵌套关联表单
我正在试验 Phoenix 1.6 和 LiveView,并试图让我的嵌套表单/模型按预期工作。
我有一个类似于:
Parent
,的模式Child
,其中 Parent has_many Children // Child belongs_to parent。
- 我有一个带有父表单的 LiveView 组件,它按预期工作。
- 我用inputs_for渲染Parent.children,初始渲染(例如渲染已经在数据库中的Children)工作正常。
我想要一个类似 Add Child 按钮的东西,它将在我的表单中的 inputs_for 块中呈现另一个 Child 模型,我可以对其进行更改并最终提交。
我尝试了一些东西,例如https://fullstackphoenix.com/tutorials/nested-model-forms-with-phoenix-liveview,但它们似乎不起作用,或者似乎有点过时(参考事物对我来说不存在)。该文档有点帮助,但似乎没有将 Ecto 位与我正在寻找的 LiveView 位连接起来。有没有人对实现我正在寻找的最佳方式有想法/建议?(我对 Elixir/Phoenix/Ecto 也比较陌生,所以可能有些事情我忽略了)
authentication - 为什么这个 liveview 在被重定向到非 liveview 页面后又挂载了?
我正在一个项目中工作,该项目主要是一个新生成的 Web 应用程序,phx.new
来自phx.gen.auth
. 我有一个非 liveview 的索引页面。登录后,用户被重定向到主页面,这是一个实时视图。
期望:点击生成的Log out
链接后,用户应该被重定向到/
索引页面,而不是实时视图。此行为由生成的身份验证指定。
经验:问题是当我单击生成的Log out
链接时,并没有像生成的身份验证那样被重定向到注销的索引启动页面,而是被重定向到登录页面,在那里我看到了两个闪烁消息:一次:info
闪烁表示注销成功,第二次:error
闪烁表示“您必须登录才能访问此页面。”我不希望用户:error
在登录页面上看到该闪烁,更糟糕的是,我认为这是事实:error
出现 flash的原因PageLive
是索引页面上不存在的 liveviewmount/3
再次运行其功能(第三次),这导致 liveview 身份验证再次运行,并导致第二次重定向。重要的是,出现此问题间歇性地,即有时重定向正常工作并将用户发送到索引页面而没有问题,而其他时候则显示第二次冗余重定向和错误的 Flash 消息。我认为这表明某种竞争条件。
我有一个相对较新生成的项目,其中包含这些路线(除其他外):
router.ex
身份验证由 生成phx.gen.auth
。generate 中的delete
动作UserSessionController
触发generate 触发UserAuth.log_out_user/1
。
user_session_controller.ex
user_auth.ex
路由器中/dash
的实时路由通过 liveview进行路由PageLive
,它只是安装在一些身份验证上,如liveview docs中所建议的那样:
page_live.ex
user_live_auth.ex
这是用户单击注销后的过程日志:
请注意在上面的日志中,302 重定向是如何发生的,然后套接字立即重新连接并mount/3
运行,然后触发另一个重定向,这次是/users/log_in
路由。据我了解,套接字不应该在这里尝试重新连接,而且我看不出是什么触发了这个。
为什么PageLive
注销后302重定向到非直播页面后再次触发挂载,从而触发第二次重定向到登录页面?
phoenix - 使用 Heex 进行路由
我正在将 phoenix LiveView 更新为 Heex 模板,但我坚持如何更新Routing.page_path
在这种情况下,如何正确更新到 Heex 模板?
elixir - 创建新的 Phoenix/Elixir 项目时遇到错误
按照标准程序创建一个新的 Phoenix/Elixir 项目。但是,在安装过程中遇到错误。请评论如何解决此错误。
0.设置
1. 创建一个文件夹来保存数据库数据。
2. 使用 Postgres 映像运行 Docker 容器。
3. 验证容器是否正在运行。
4. 创建一个新项目
5.画龙点睛
错误信息
elixir - JS.__struct__/1 未定义,无法扩展 struct JS
我尝试浏览 LiveView 0.17.1 文档的 JS 示例(https://hexdocs.pm/phoenix_live_view/0.17.1/Phoenix.LiveView.JS.html)
所以我创建了一个新的 Phoenix 1.6.2 应用程序,mix phx.new demo3 --no-ecto
并将mix.exs
deps 部分更改为:
之后,我创建了一个 LiveView 页面并将此示例代码添加到其中:
启动服务器失败:
我必须添加/更改什么来解决这个问题?
npm - Windows 10 中 Phoenix LiveView 应用的 Npm 安装失败
背景
我有一个 Phoenix 应用程序,在一个全新的 Windows 10 VM 中。在这个项目中,我无法在npm install
没有错误的情况下运行。
问题
npm install
在目录中运行后,assets
我得到以下输出:
我正在使用 Node v17.0.1,它是安装了所有依赖项的最新版本。
我试过的
我的第一反应是将 Node 降级到 LTS,在本例中为 v16.X。(过去的一个很好的提醒: https ://elixirforum.com/t/npm-installation-for-fresh-phoenixliveview-project-failing-in-windows-10/37170 )但是那也没有用。
然后我尝试手动手动下载 VSCode 工具依赖项并手动设置所有内容。那也是一个死胡同。
我在具有管理员权限的 shell 中运行所有命令。
在这一点上,我不知道还能尝试什么。
问题
我怎样才能解决这个问题?
elixir - 在 Elixir 中制作桌面应用程序
背景
在我使用 Elixir for Windows 制作桌面应用程序的过程中(我现在已经放弃了做多桌面应用程序的想法),我正在尝试创建一个 HelloWorld 桌面应用程序。
这个应用程序基本上是你从运行 mix phx.new hello 中得到的。我使用的是 Phoenix 的最新版本,所以我不必处理 SASS 或类似的东西,老实说,这是一种祝福,因为这意味着我不再有任何 node-gyp 问题。使其桌面友好
然而,正如你们中的一些人可能已经意识到的那样,仅仅创建一个 Phoenix 项目并不能使其成为桌面应用程序。这是桌面项目的用武之地:
这是一个依赖项,可让您使您的应用程序像桌面一样。由于我过去曾运行过示例应用程序:
我想我会尝试将它拆开,并尝试启动我能做到的最简单、最愚蠢的 HelloWorld 应用程序。基本上,当我运行时,mix iex -S
我希望它而不是在浏览器中打开一个窗口来打开一个桌面应用程序。
问题
我已经添加了所有依赖项,并且我的项目结构与示例应用程序的结构有些相似:
mix.exs
但是,我所做的一切都不起作用。控制台中没有错误,但桌面应用程序无法启动。我愿意扔掉所有东西,我想要的只是有一种在桌面窗口中打开它的方法。
我认为可能存在配置问题,但我无法确定,因为示例应用程序是使用使用 SASS 的旧版本 Phoenix 完成的。
问题
有人可以帮我弄清楚打开桌面窗口的 MNE 是什么吗?
我在这里开源了项目:
html-lists - 不使用 JavaScript 动画删除列表中的项目
我有一个显示在 LiveView 页面上的项目列表,该列表会根据用户交互而变化。列表中的每一项都通过 Ecto 从数据库中加载,并在 for 循环中呈现在页面上:
每个项目都有一个从列表中删除项目的按钮。liveview中的实现是这样的:
当用户单击删除按钮时,我想要某种淡出 CSS 过渡。如果没有任何自定义 JS,我怎么能做到这一点?
我在用:
- 凤凰1.6
- Phoenix LiveView 0.16.0