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

elixir - 在 Phoenix Liveview 中,如何更改按钮标签以指示作业状态

LiveView 是否会在将值添加到分配时更新 DOM,例如assign(socket, strLabel: "Push me")?或者当handle_event 返回 { .. , socket} 时?我有一个按钮,单击时从数据库中读取。我希望在读取数据库时将按钮标签更改为“正在读取...”。以下是我的尝试,但临时标签“正在阅读..”从未出现。

0 投票
2 回答
885 浏览

elixir - 如何在 Phoenix LiveView 中测试 handle_info/2?

问候凤凰 LiveView 奇才!

语境

我们有一个基本的 LiveView 计数器应用程序:https
://github.com/dwyl/phoenix-liveview-counter-tutorial 代码非常简单: 该应用程序按预期工作,请参阅:https://live-view-counter.herokuapp .com/live/counter.ex

测试文件是: 我们一直试图在测试中调用该函数。 所以我们的项目中有未经测试的代码。这是不可取的。 见:https ://codecov.io/gh/dwyl/phoenix-liveview-counter-tutorial/src/master/lib/live_view_counter_web/live/counter.extest/live_view_counter_web/live/counter_test.exs
handle_info/2

柜台未覆盖

我们已经阅读了官方文档https://hexdocs.pm/phoenix_live_view/Phoenix.LiveViewTest.html
但无法理解如何去做。我们缺少什么?

我们真的很想LiveView在我们的“真实”项目中使用,但我们想确保我们的LiveView应用程序经过全面测试。

问题

我们如何编写一个测试来调用该handle_info/2函数?

0 投票
3 回答
1291 浏览

elixir - 在挂载期间使用 LiveView 将值从客户端传递到 Phoenix 服务器

我正在尝试将一个值从浏览器(例如,localstorage)传递到服务器,并在安装实时模板(leex)并创建 UI 视图时使其可用。仅尝试以下操作以获取如下所示的消息。

0 投票
1 回答
554 浏览

elixir - 如何在 Liveview 模板中停止页面刷新

我的 LiveView 应用程序在函数中设置了一些初始状态(例如 button_label)mount。模板似乎在通过一些消息传递时被重新安装。

在下面的示例中,按钮标签最初设置为“单击以运行”,当单击按钮时,它成功更改为“正在运行...”然后“仍在进行中”。但是,mount会自动再次运行,并且标签会回到“单击运行”。期望的行为是标签保持为“仍在进行中”,直到收到另一条消息,指示该过程稍后完成。

是什么触发了重新安装,我该如何阻止它?

0 投票
1 回答
1227 浏览

phoenix-framework - 触发表单字段更改值的更改

我有一个 liveview 表单和一个文本输入:

现在有一段时间我想以编程方式清除此字段,我通过更改分配来做到这一点:

这样做的问题是phx-change分配给表单的事件没有被触发。

我还尝试创建一个 JS 挂钩并从挂钩中更改字段的值,但这也不会创建事件。

0 投票
0 回答
298 浏览

phoenix - 从 live_view 测试用例调用 LiveViewComponent 的 render_submit 时出现问题

在测试用例期间不会触发 LiveViewComponent 的 render_submit() 事件,它总是尝试在 LiveView (parent) 中查找事件 - 但实际事件在 LiveComponent(child) 中定义

索引.ex

index.html.leex

create_component.ex

新的.html.leex

test_live.ex

下面是错误

** (EXIT from #PID<0.1046.0>) 引发异常:
** (ArgumentError)在视图中找不到 ID 为“new”的组件

当我运行测试用例时,它总是抛出一个名为no component with ID的错误

0 投票
1 回答
161 浏览

elixir - 为什么第二次挂载 LiveView 后 Highcharts 图表会消失?

使用的软件:

  • 灵丹妙药 v1.10.2
  • 凤凰 1.5.0-rc0
  • LiveView 0.12.1
  • macOS Cataline 10.15.4
  • 在 Safari 和 Firefox 上试过

我有一个 LiveView 很好地设置了一个显示一些数据的图表(来自 Highcharts)。该图表包含在一个 div 中,该phx-update="ignore"属性的效果很好。但是,离开当前的 LiveView 并返回它会使图表消失。

当我第一次访问 LiveView 页面时:

在此处输入图像描述

离开后返回<%= live_patch "Dashboard, ... %>or <%= live_redirect "Dashboard", ... %>

在此处输入图像描述

dashboard_live.html.leex

刷新页面后图表正常显示。

0 投票
1 回答
856 浏览

elixir - phx-change 后更新表单域的值

我有一个搜索机场代码的 LiveView 应用程序。当用户输入ham时,它应该用 (String.upcase/1) 替换该表单字段的内容,HAM但事实并非如此。但根据我对我的代码的理解,它应该。我必须更改哪些内容才能将该字段中的所有输入替换为升级版本?

顺便说一句:如果我向它添加一个按钮并使用phx-submit而不是phx-change. 但我想让它为phx-change.

在此处输入图像描述

设置

lib/travelagent_web/router.ex

lib/travelagent/airports.ex

lib/travelagent_web/live/search_live.ex

lib/travelagent_web/live/search_live.html.leex

JavaScript 控制台输出

JavaScript 控制台输出

phx-提交版本

如果我使用这种形式:

我得到这个工作结果(输入fra并单击按钮后):

在此处输入图像描述

PS:对于这个问题,JavaScript 或 CSS 有上百万种可能的解决方案。但我想知道如何使用 LiveView 正确解决这个问题。

0 投票
1 回答
175 浏览

phoenix-framework - LiveView 在控制台中不为 CID 错误抛出任何组件

我有一个Menu使用 3 Live Component CategoriesProductsVariants

phx-click对每个类别、产品进行设置,因此当点击类别时,handle_event 将返回assign(socket, :products, products)ProductsComponent将产品为点击的类别,然后点击产品,将显示变体。

并且handle_events 在菜单视图内

menu.html.leex

我的问题是,点击产品后,显示变体,然后我返回单击另一个类别,它会显示新产品,但旧变体仍然存在。所以我尝试assign(socket, :variants, [])在类别中处理事件,但它在控制台中引发错误no component for CID 2,并且旧的 Products 和 Variants 组件保持不变。

在此处输入图像描述

任何人都知道如何解决此问题,或者每次单击类别时清除 VariantsComponent 的解决方法?

谢谢!

0 投票
1 回答
226 浏览

phoenix-framework - 如何使用 Phoenix LiveView 处理表单文件?

我正在使用 Phoenix LiveView 构建带有图像(头像)的表单。

我知道 Phoenix LiveView 还不支持文件,那么,我可以使用什么近似值?