问题标签 [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 - 在 Phoenix Liveview 中,如何更改按钮标签以指示作业状态
LiveView 是否会在将值添加到分配时更新 DOM,例如assign(socket, strLabel: "Push me")
?或者当handle_event 返回 { .. , socket} 时?我有一个按钮,单击时从数据库中读取。我希望在读取数据库时将按钮标签更改为“正在读取...”。以下是我的尝试,但临时标签“正在阅读..”从未出现。
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
函数?
elixir - 在挂载期间使用 LiveView 将值从客户端传递到 Phoenix 服务器
我正在尝试将一个值从浏览器(例如,localstorage)传递到服务器,并在安装实时模板(leex)并创建 UI 视图时使其可用。仅尝试以下操作以获取如下所示的消息。
elixir - 如何在 Liveview 模板中停止页面刷新
我的 LiveView 应用程序在函数中设置了一些初始状态(例如 button_label)mount
。模板似乎在通过一些消息传递时被重新安装。
在下面的示例中,按钮标签最初设置为“单击以运行”,当单击按钮时,它成功更改为“正在运行...”然后“仍在进行中”。但是,mount
会自动再次运行,并且标签会回到“单击运行”。期望的行为是标签保持为“仍在进行中”,直到收到另一条消息,指示该过程稍后完成。
是什么触发了重新安装,我该如何阻止它?
phoenix-framework - 触发表单字段更改值的更改
我有一个 liveview 表单和一个文本输入:
现在有一段时间我想以编程方式清除此字段,我通过更改分配来做到这一点:
这样做的问题是phx-change
分配给表单的事件没有被触发。
我还尝试创建一个 JS 挂钩并从挂钩中更改字段的值,但这也不会创建事件。
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的错误
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
:
刷新页面后图表正常显示。
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 控制台输出
phx-提交版本
如果我使用这种形式:
我得到这个工作结果(输入fra
并单击按钮后):
PS:对于这个问题,JavaScript 或 CSS 有上百万种可能的解决方案。但我想知道如何使用 LiveView 正确解决这个问题。
phoenix-framework - LiveView 在控制台中不为 CID 错误抛出任何组件
我有一个Menu
使用 3 Live Component Categories
、Products
和Variants
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 的解决方法?
谢谢!
phoenix-framework - 如何使用 Phoenix LiveView 处理表单文件?
我正在使用 Phoenix LiveView 构建带有图像(头像)的表单。
我知道 Phoenix LiveView 还不支持文件,那么,我可以使用什么近似值?