问题标签 [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.
elixir - 未知注册表:MyApp.Pubsub
背景
我在一个基本上是 HelloWorld 项目的伞形项目中有一个 Phoenix LiveView 应用程序。不过,In This Phoenix App 很特别,因为它是一个桌面应用程序: https ://github.com/elixir-desktop/desktop
我的 Phoenix 应用程序不使用 Ecto 或任何数据库,因此我必须将常用PubSub
行添加到application.ex
.
问题
一切都按预期工作,除非我关闭应用程序。关闭后出现错误:
这是我的application.ex
文件:
这是正在发生的事情的 GIF:
我究竟做错了什么?
elixir - 如何从 Phoenix LiveView heex 模板调用 Elixir 函数,并使用来自套接字分配的数据传递参数?
我正在尝试使用此博客文章中的代码:[Phoenix LiveView] format date/time with local time zone。
我确认(用IO.inspect
)他mount
和defp
我添加到 LiveView 的代码添加了套接字分配。但他没有给出如何format_time
从 heex 模板调用函数的示例。也许这应该很明显,但对我来说并不明显。我试过这个:
但我得到这个错误:
我想我在渲染时不能使用套接字分配?
elixir - 如何将旧的 liveview 应用程序转换为新的 Phoenix 版本?
背景
我正在将旧版 LiveView 应用程序移植到最新版本的 Phoenix (v1.6.5)。总的来说,我对整个事物都是新手,我希望能够运行mix phx.new web_interface --live --no-ecto
并找到与以前相似的结构:
相反,我得到了:
缺了点什么
密切注意您现在会看到我缺少几个重要的文件夹,即web_interface_web
和live
文件夹。
所以现在我明白了我错过了一个巨大的里程碑升级或者我的mix phx.new
命令有问题的印象。
问题
- 为什么这些文件夹不见了?
- 如何移植项目?现在等效的文件夹是什么?
phoenix-framework - 使用数据列表的自动完成功能不适用于 phx-change
当从由 a 填充的自动完成列表中选择一个选项(例如,香蕉)时datalist
,所选选项(香蕉)会按预期输入到文本框中,但自动完成列表仍会显示,如附图所示。
相反,如果事件由phx-submit
(而不是phx-change
,phx-keyup
或phx-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. 如何避免这种情况并在选择选项时使选项列表消失?
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
elixir - Phoenix LiveView 表单提交,清除/重置输入值
我创建了我在 LiveView 组件中处理的这个简单表单。提交此表单后,社区清除/重置表单的最佳做法是什么?
我确实想考虑验证等。这是否总是通过 Ecto.Changeset,即使没有模式直接支持表单?
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 接收。
heroku - 在 Heroku 部署中无限重新加载 Liveview 应用程序
这可能是一个愚蠢的问题,但是我需要完成任何额外的步骤才能将 phoenix liveview 应用程序部署到 heroku?从官方文档凤凰应用程序部署成功,但将同一页面转换为实时视图导致页面无限重新加载我在heroku日志上得到的错误是:
我是否必须安装额外的构建包或在我的配置中进行一些更改?
elixir - 无法在 LiveComponent 的文本字段中输入文本
背景
我有一个活动组件,它基本上是一个带有几个text input
s 和一个提交按钮的表单。我的界面看起来有点像我想要的方式,但是有一个问题:我无法在文本输入字段中输入任何内容。
我不知道为什么。
代码
如您所见,我有 2 个文本输入字段。
我的代码如下:
起初我以为发生这种情况是因为我没有使用text_input
,但是,在 <input type="text" id="cookie" name="cookie"/>
用它替换之后,同样的情况发生了。
CSS
经过更多调查,我发现由于 CSS 代码,文本输入不起作用:
相反,如果我使用 Phoenix 的内置 CSS 类fade-in
并且fade-out
问题不会发生。
不过,我的应用程序中确实有巨大的空白(因为div
s 刚刚淡出,它们没有被删除),这是另一个问题。
问题
- 为什么我的 CSS 弄乱了文本输入字段?
- 我怎样才能解决这个问题?
elixir - Elixir Ecto 问题 - 无法在两个表之间建立关联?
我正在尝试在表之间建立关联。
我目前有一个包含以下字段的“用户”表:
ID | 电子邮件 | 密码 | 名 | 姓 | 角色 |
---|---|---|---|---|---|
1 | 老师@example.io | 哈希 | 鲍勃 | 白色的 | 老师 |
2 | 学生@example.io | 哈希 | 乔 | 棕色的 | 学生 |
我正在尝试实现两种新的用户类型:教师和学生
因此,我想为两种用户类型创建两个不同的表,它们将引用主表,如下所示:
- 教师桌
ID | 用户身份 | 名 | 姓 |
---|---|---|---|
1 | 1(参考“用户”) | 鲍勃 | 白色的 |
- 学生桌
ID | 用户身份 | 名 | 姓 |
---|---|---|---|
1 | 2(参考“用户”) | 乔 | 棕色的 |
我生成了一个新的迁移并创建了“教师”表,如下所示:
然后我为教师表定义了一个模式,如下所示:
最后,我将其添加到用户架构中:
我现在已经成功地添加了我想要的列的教师表。问题是,我的注册表只包含一个变更集。用户模式进行所有验证,并在注册成功时将用户添加到“用户”表中。但“教师”表仍然是空的。用注册用户的信息填充教师表的最佳做法是什么?