问题标签 [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 回答
54 浏览

elixir - 未知注册表:MyApp.Pubsub

背景

我在一个基本上是 HelloWorld 项目的伞形项目中有一个 Phoenix LiveView 应用程序。不过,In This Phoenix App 很特别,因为它是一个桌面应用程序: https ://github.com/elixir-desktop/desktop

我的 Phoenix 应用程序不使用 Ecto 或任何数据库,因此我必须将常用PubSub行添加到application.ex.

问题

一切都按预期工作,除非我关闭应用程序。关闭后出现错误:

这是我的application.ex文件:

这是正在发生的事情的 GIF:

在此处输入图像描述

我究竟做错了什么?

0 投票
0 回答
51 浏览

elixir - 如何从 Phoenix LiveView heex 模板调用 Elixir 函数,并使用来自套接字分配的数据传递参数?

我正在尝试使用此博客文章中的代码:[Phoenix LiveView] format date/time with local time zone

我确认(用IO.inspect)他mountdefp我添加到 LiveView 的代码添加了套接字分配。但他没有给出如何format_time从 heex 模板调用函数的示例。也许这应该很明显,但对我来说并不明显。我试过这个:

但我得到这个错误:

我想我在渲染时不能使用套接字分配

0 投票
1 回答
45 浏览

elixir - 如何将旧的 liveview 应用程序转换为新的 Phoenix 版本?

背景

我正在将旧版 LiveView 应用程序移植到最新版本的 Phoenix (v1.6.5)。总的来说,我对整个事物都是新手,我希望能够运行mix phx.new web_interface --live --no-ecto并找到与以前相似的结构:

相反,我得到了:

缺了点什么

密切注意您现在会看到我缺少几个重要的文件夹,即web_interface_weblive文件夹。

所以现在我明白了我错过了一个巨大的里程碑升级或者我的mix phx.new命令有问题的印象。

问题

  • 为什么这些文件夹不见了?
  • 如何移植项目?现在等效的文件夹是什么?
0 投票
0 回答
22 浏览

phoenix-framework - 使用数据列表的自动完成功能不适用于 phx-change

当从由 a 填充的自动完成列表中选择一个选项(例如,香蕉)时datalist,所选选项(香蕉)会按预期输入到文本框中,但自动完成列表仍会显示,如附图所示。 在此处输入图像描述

相反,如果事件由phx-submit(而不是phx-change,phx-keyupphx-keydown) 绑定,则列表会按预期消失。不幸的是,我不能使用phx-submit,因为自动完成列表应该在输入时更新。

It appears that when an option is selected, and LiveView finishes handling phx-change and updates the page, it re-activates the autocomplete menu. 如何避免这种情况并在选择选项时使选项列表消失?

0 投票
0 回答
34 浏览

elixir - Phoenix Live View - 订阅发布者时多次调用“mount”

我在演示 phoenix 应用程序中遇到了问题。该应用程序由一个 api 组成,它侦听消息 json 并在 ecto 数据库中创建一个适当的条目。

还有一个实时视图显示消息表中的条目。我的目标是在实时视图上实现更新,并在成功创建消息时将创建的消息添加到套接字中。为此,我尝试使用该模块并在安装实时视图时PubSub引入了对该主题的订阅。"messaging"

正在从消息 api 控制器执行广播

现在的问题是,每次 api 请求创建消息并执行广播时,mount都会调用函数而不是插入事件句柄。可能是什么问题呢?

我已经使用调试器进行了调查,第二个挂载调用的调用堆栈是:

  • ServerLiveWeb.Demo.mount/3
  • Phoenix.LiveView.Utils.maybe_call_mount!/3
  • Phoenix.LiveView.Channel.verified_mount/5
  • Phoenix.LiveView.Channel.handle_info/2
0 投票
1 回答
162 浏览

elixir - Phoenix LiveView 表单提交,清除/重置输入值

我创建了我在 LiveView 组件中处理的这个简单表单。提交此表单后,社区清除/重置表单的最佳做法是什么?

我确实想考虑验证等。这是否总是通过 Ecto.Changeset,即使没有模式直接支持表单?

0 投票
0 回答
54 浏览

elixir - 子 LiveView 的事件被发送给父

我在我的主 LiveView 中渲染了一个嵌套(子)LiveView。子 LiveView 内的事件被发送到父而不是子。

我如何实现子 LiveView 接收事件而不是父事件?

我正在使用 phoenix_live_view 0.17.5。

这是我的设置:

我的主 LiveView 内的渲染

我的孩子 LiveView 内的渲染

当我在我的子 LiveView 中提交表单时,我收到一条错误消息,指出我的父 LiveView 中的句柄事件函数未定义。

我尝试将 phx-target="create-project-form-liveview" 添加到我的表单中,但是当我这样做时,提交按钮不再执行任何操作,并且浏览器控制台显示“没有找到与 phx-target 选择器匹配的内容”create-project -form-liveview”未定义。

当我将 phx-target="#create-project-form-liveview" 添加到我的表单时,该事件会触发,但仍会被我的主(父)LiveView 接收。

0 投票
1 回答
47 浏览

heroku - 在 Heroku 部署中无限重新加载 Liveview 应用程序

这可能是一个愚蠢的问题,但是我需要完成任何额外的步骤才能将 phoenix liveview 应用程序部署到 heroku?从官方文档凤凰应用程序部署成功,但将同一页面转换为实时视图导致页面无限重新加载我在heroku日志上得到的错误是:

我是否必须安装额外的构建包或在我的配置中进行一些更改?

0 投票
1 回答
41 浏览

elixir - 无法在 LiveComponent 的文本字段中输入文本

背景

我有一个活动组件,它基本上是一个带有几个text inputs 和一个提交按钮的表单。我的界面看起来有点像我想要的方式,但是有一个问题:我无法在文本输入字段中输入任何内容。

我不知道为什么。

代码

如您所见,我有 2 个文本输入字段。

问题

我的代码如下:

起初我以为发生这种情况是因为我没有使用text_input,但是,在 <input type="text" id="cookie" name="cookie"/>用它替换之后,同样的情况发生了。

CSS

经过更多调查,我发现由于 CSS 代码,文本输入不起作用:

相反,如果我使用 Phoenix 的内置 CSS 类fade-in并且fade-out问题不会发生。

不过,我的应用程序中确实有巨大的空白(因为divs 刚刚淡出,它们没有被删除),这是另一个问题。

问题

  • 为什么我的 CSS 弄乱了文本输入字段?
  • 我怎样才能解决这个问题?
0 投票
1 回答
56 浏览

elixir - Elixir Ecto 问题 - 无法在两个表之间建立关联?

我正在尝试在表之间建立关联。

我目前有一个包含以下字段的“用户”表:

ID 电子邮件 密码 角色
1 老师@example.io 哈希 鲍勃 白色的 老师
2 学生@example.io 哈希 棕色的 学生

我正在尝试实现两种新的用户类型:教师学生

因此,我想为两种用户类型创建两个不同的表,它们将引用主表,如下所示:

  • 教师
ID 用户身份
1 1(参考“用户”) 鲍勃 白色的
  • 学生
ID 用户身份
1 2(参考“用户”) 棕色的

我生成了一个新的迁移并创建了“教师”表,如下所示:

然后我为教师表定义了一个模式,如下所示:

最后,我将其添加到用户架构中:

我现在已经成功地添加了我想要的列的教师表。问题是,我的注册表只包含一个变更集。用户模式进行所有验证,并在注册成功时将用户添加到“用户”表中。但“教师”表仍然是空的。用注册用户的信息填充教师表的最佳做法是什么?