问题标签 [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.

0 投票
1 回答
212 浏览

ubuntu - wxWidgets安装后找不到wxWebView

背景

我正在尝试运行desktop-example-appElixir Berlin 2021 年 2 月聚会上展示的演示应用程序:

我已按照 Ubuntu 安装指南中的所有必要设置步骤进行操作:

我在项目中通过 asdf 安装了其余的依赖项:

问题

据我所知,安装没有任何问题。但是,当我执行脚本./run以启动应用程序时,我收到以下错误:

我已经安装了 wxWidgets,但它似乎找不到它。这是我的操作系统版本:

我该如何解决这个问题?

编辑

我试着检查我是否webkitgtk安装了,但显然我没有。即使它似乎存在于以下位置,我也找不到该包packages.ubuntu.com

这令人困惑,因为显然包的名称应该是正确的: https ://packages.ubuntu.com/search?searchon=sourcenames&keywords=webkitgtk

0 投票
0 回答
106 浏览

elixir - 根据一个 PubSub 事件更新所有 Phoenix LiveView 套接字

假设我们有一个 Phoenix LiveView 应用程序订阅了一些通知。所有 LiveView 都通过_header.html.eex模板以及菜单和其他内容显示带有图标的新通知数量。

为了使所有 LiveView 中的通知图标保持最新,应该有一些机制来订阅 PubSub 并实时更新套接字分配。

有没有一种方法可以全局更新所有这些,而不必handle_info在每个 LiveView 中剪切粘贴相同的内容?

0 投票
0 回答
192 浏览

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 也比较陌生,所以可能有些事情我忽略了)

0 投票
2 回答
263 浏览

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重定向到非直播页面后再次触发挂载,从而触发第二次重定向到登录页面?

0 投票
1 回答
73 浏览

phoenix - 使用 Heex 进行路由

我正在将 phoenix LiveView 更新为 Heex 模板,但我坚持如何更新Routing.page_path

在这种情况下,如何正确更新到 Heex 模板?

0 投票
1 回答
100 浏览

elixir - 创建新的 Phoenix/Elixir 项目时遇到错误

按照标准程序创建一个新的 Phoenix/Elixir 项目。但是,在安装过程中遇到错误。请评论如何解决此错误。

0.设置

1. 创建一个文件夹来保存数据库数据。

2. 使用 Postgres 映像运行 Docker 容器。

3. 验证容器是否正在运行。

4. 创建一个新项目

5.画龙点睛

错误信息

0 投票
1 回答
254 浏览

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.exsdeps 部分更改为:

之后,我创建了一个 LiveView 页面并将此示例代码添加到其中:

启动服务器失败:

我必须添加/更改什么来解决这个问题?

0 投票
1 回答
103 浏览

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 中运行所有命令。

在这一点上,我不知道还能尝试什么。

问题

我怎样才能解决这个问题?

0 投票
1 回答
132 浏览

elixir - 在 Elixir 中制作桌面应用程序

背景

在我使用 Elixir for Windows 制作桌面应用程序的过程中(我现在已经放弃了做多桌面应用程序的想法),我正在尝试创建一个 HelloWorld 桌面应用程序。

这个应用程序基本上是你从运行 mix phx.new hello 中得到的。我使用的是 Phoenix 的最新版本,所以我不必处理 SASS 或类似的东西,老实说,这是一种祝福,因为这意味着我不再有任何 node-gyp 问题。使其桌面友好

然而,正如你们中的一些人可能已经意识到的那样,仅仅创建一个 Phoenix 项目并不能使其成为桌面应用程序。这是桌面项目的用武之地:

这是一个依赖项,可让您使您的应用程序像桌面一样。由于我过去曾运行过示例应用程序:

我想我会尝试将它拆开,并尝试启动我能做到的最简单、最愚蠢的 HelloWorld 应用程序。基本上,当我运行时,mix iex -S我希望它而不是在浏览器中打开一个窗口来打开一个桌面应用程序。

问题

我已经添加了所有依赖项,并且我的项目结构与示例应用程序的结构有些相似:

mix.exs

但是,我所做的一切都不起作用。控制台中没有错误,但桌面应用程序无法启动。我愿意扔掉所有东西,我想要的只是有一种在桌面窗口中打开它的方法。

我认为可能存在配置问题,但我无法确定,因为示例应用程序是使用使用 SASS 的旧版本 Phoenix 完成的。

问题

有人可以帮我弄清楚打开桌面窗口的 MNE 是什么吗?

我在这里开源了项目:

0 投票
0 回答
11 浏览

html-lists - 不使用 JavaScript 动画删除列表中的项目

我有一个显示在 LiveView 页面上的项目列表,该列表会根据用户交互而变化。列表中的每一项都通过 Ecto 从数据库中加载,并在 for 循环中呈现在页面上:

每个项目都有一个从列表中删除项目的按钮。liveview中的实现是这样的:

当用户单击删除按钮时,我想要某种淡出 CSS 过渡。如果没有任何自定义 JS,我怎么能做到这一点?

我在用:

  • 凤凰1.6
  • Phoenix LiveView 0.16.0