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

elixir - 我如何在 Phoenix Live View 中处理嵌套表单操作?

所以,我按照本教程创建动态表单:http ://blog.plataformatec.com.br/2016/09/dynamic-forms-with-phoenix/

好的,这是我的实际input_helpers.ex

在这个项目中,我们有一个cliente和一个user模式,具有 1-1 的关系!

在实时视图模板中,我做了:

前两个字段来自变更集cliente,其他来自user变更集。当验证开始时,也就是用户开始输入输入,cliente的字段正确地应用了border-red-500类,但是user的字段没有!

我对其进行了调试,发现当它尝试验证用户变更集的任何字段时,在的state_class函数中input_helpers.ex,它属于该!form.acton子句。

我的问题是:我该如何处理这个嵌套的表单动作?为什么它属于上述cond条款?

这是一个 GIF 来演示这个问题: 在此处输入图像描述

0 投票
1 回答
341 浏览

elixir - 在 phoenix LiveView 中使用外部库

我正在尝试将 WYSIWYG-Editor tinymce 与包含 textarea 字段的 phoenix LiveView 集成。在使用 LiveView 之前,我将它作为 node_module 库导入到 app.js 文件中

然后通过初始化它

为了能够验证模板中的表单输入,我将其转换为一个 LiveView,我通过它提供服务

按照惯例。但是,一旦安装了 LiveSocket,tinymce-plugin 就不再工作,并且只剩下一个基本的 textarea 字段,在该字段上执行预期的验证。

有没有办法将此外部库加载到 LiveView 中?我试图通过一个钩子调用一个包含 tinymce.init 步骤的函数

但这不起作用。有谁知道这个问题的解决方案?

0 投票
2 回答
177 浏览

elixir - live_redirect 表单后不抛出 phx-change

我在 LiveView 中处理表单上的 phx 更改时遇到问题。我正在创建一个用于过滤对象列表的搜索字段。该字段还有一个重置按钮。它看起来像这样:

搜索字段处理程序在 liveview 中,而不是在 liveview 组件中。Handler 是这样实现的:

当我从页面开始或刷新对象列表和搜索字段所在的位置时,一切都按预期工作。但是当我 live_redirect 到另一个页面然后 live_redirect 返回时,表单不再抛出事件。重置按钮仍然有效并引发事件。这里可能是什么问题?

0 投票
0 回答
185 浏览

ajax - 发出 GET 请求以在 Phoenix LiveView 中下载文件

我一直在尝试调用带有对 Rest API的身份验证的 GET HTTP 请求,以在 Phoenix Live View 页面中下载文件。我调用这个 API 的团队不像其他公司那样有签名 URL,所以我不能只使用window.location=.

我正在调用的 API 将返回一个Content-Disposition标头,例如Content-Disposition: attachment; filename*=UTF-8''Q1%20Report.pdf

在我的 LiveView 页面中,我有一个链接,单击后将需要调用此 GET 请求并重定向用户以从浏览器中保存文件。

如果这是一个简单的 JS 页面,我会简单地做这样的事情:

但是如何使用 LiveView 做到这一点?我在 Phoenix LiveView 文档中进行了搜索,但找不到任何示例。如果你以前做过,你能告诉我怎么做吗?

0 投票
2 回答
788 浏览

elixir - Phoenix LiveView 动态选择标签中的表单问题

在具有 3 个选择标签的 phoenix LiveView 表单中,第一个影响其他两个,即依赖的两个应该只显示第一个可用的选项,如下所示:

item1被选中时,item2选择item3标签确实包含正确的相应选项,但不显示任何选择的项目(因为它们不包含提示,所以应该选择第一个选项)。变更集不包括对item2and的更改item3(与显示的内容匹配)。但是,在item2选择之后,item3将显示第一个选项作为选择(如预期的那样)。之后,变更集确实包含item1item2更改,但item3选择的选项不存在。

问题:

  1. 如何让依赖选择标签(item2item3)在更改为第一个选择(item1)后显示它们各自的第一个选项?
  2. 如何从依赖选择标签中获取“默认”选项到变更集中?
0 投票
1 回答
71 浏览

elixir - 更新实时视图时如何保持输入的重点?

我有一个实时视图,当用户更新表单元素中的文本输入时添加一个p标签。typing...我希望typing..在用户模糊文本输入时将其删除。

事件通过以下方式处理:

问题是当我最初在输入框中输入时,它失去了焦点,我必须重新点击它才能继续输入。

0 投票
0 回答
58 浏览

elixir - 不同元素更改时调用 LiveView update() 挂钩

当更新不同的元素时,我遇到了update()调用钩子函数的问题。我的 LiveView 进程从其他进程接收到两条不同的消息,并且两个事件处理程序更新了两个不同的分配,但是这两个更新都调用了挂钩,即使只有一个更新会影响带有挂钩的元素。我猜这是因为在分配更改时重新渲染了整个 LiveView。我希望挂钩仅在挂钩所绑定的元素发生更改时触发。

我将如何解决这个问题?

我正在使用phoenix 1.5.9phoenix_live_view 0.15.1

下面我制作了一个类似于我的用例的最小代码示例:

实时取景

模板

this.el在控制台中打印了两次,但我希望它只打印一次,因为它只附加到divwithid="log1"

谢谢

0 投票
0 回答
95 浏览

elixir - 编程 Phoenix LiveView 书 | 第一章的最后一个任务怎么做?

我最近开始阅读 Programming Phoenix LiveView 这本书,在本章的最后,我们应该做一些任务,这些任务是:

现在您已经看到了一个基本的 LiveView“游戏”,您可以调整游戏,让用户真正赢。您需要:

• 游戏创建时为套接字分配一个随机数,用户需要猜测。

• 检查handle_event 中的那个数字以进行猜测。

• 猜对的奖励积分。

• 当用户获胜时显示获胜消息。

• 当用户获胜时显示重启消息和按钮。提示:您可能需要查看 live_patch/2 函数来帮助您构建该按钮。您可以将最后一个挑战视为一个延伸目标。我们将在接下来的章节中更详细地介绍 live_patch/2。

除最后一项外,我已完成上述 5 项任务中的 4 项。

如何在用户猜对数字时触发的函数内向我的页面添加一个按钮handle_event/3(不确定这是否是执行此操作的正确位置)?我看过live_patch函数,但我认为首先我需要想办法将它添加live_patch到我的 DOM 中,但我不知道如何。您可以在下面看到相关代码。

0 投票
0 回答
36 浏览

ios - 带密码的 LiveView 表单 - iOS Safari 密码保存弹出窗口

Save password/Never for this webstie/Not now在 iOS 上的 Safari 浏览器上出现弹出窗口的问题。一旦我在表单中输入完密码并进入下一步,即First name,就会出现弹出窗口,我们可以说这是一种例外行为。但是,一旦First name填满并且我移动到该Last name字段 - 关于保存密码的弹出窗口再次出现。如果我在 - 下方添加更多字段,Last name则每一步都会显示弹出窗口。

我希望弹出窗口只显示一次 - 无论是在表格末尾还是在填写Password字段后,这对我来说并不重要。

下面我从我的 LiveView 表单中粘贴了一些代码。

Erlang/OTP 24 [erts-12.0.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]

Elixir 1.12.2(使用 Erlang/OTP 22 编译)

实时取景 0.15.5

凤凰 1.5.6

0 投票
1 回答
130 浏览

elixir - Phoenix 阻止 conn 从 Liveview 重定向

我有一个带有表单的 Liveview,用户在其中做出几个选择,然后在提交表单时将发布请求发送到标准controller以处理下载。我在成功创建下载时发送下载case的操作中有一个声明,这工作正常。controller :download我不知道如何防止其他:error情况从 Liveview 重定向。