【发布时间】:2020-11-26 18:44:06
【问题描述】:
我正在尝试在触发 Javascript 事件后使用 Javascript 更新 Liveview。
Liveview 必须显示一个 <div> 元素,其中包含一些从 Javascript 发送的值。
我的问题是:我应该如何将这些值从 Javascript 传递到 Liveview?
我可能还需要 Liveview 在 Javascript 中发送的值。再说一遍:我应该如何将这些值从 Liveview 传递给 Javascript?
在 Javascript 中创建了一个 Livesocket 以供 liveview 工作,但我看不到从那里获取或设置分配值的方法。 从/到 Liveview 传递值的唯一方法似乎是在某些时候通过 DOM。例如:
<div id="lv-data" phx-hook="JavascriptHook"></div>
let hooks = {};
hooks.JavascriptHook = {
mounted(){
this.el.addEventListener("jsEvent", (e) =>
this.pushEvent("jsEventToPhx", e.data, (reply, ref) =>
console.log("not sure what to do here")));
this.handleEvent("phxEventToJS", (payload) => console.log("data received: " + payload));
}
}
为了纯粹的数据交换,不得不使用带有虚拟 <div> 的 DOM 感觉很奇怪......
【问题讨论】:
标签: javascript elixir phoenix-framework phoenix-live-view