在 phoenix LiveView 中使用外部库
Using external libraries in phoenix LiveView
我正在尝试将 WYSIWYG-Editor tinymce 与包含文本区域字段的 phoenix LiveView 集成。在使用 LiveView 之前,我将其作为 node_module 库导入到 app.js 文件
import tinymce from '../node_modules/tinymce/tinymce'
然后通过
初始化
tinymce.init({
selector: 'textarea',
plugins: ...
})
为了能够验证模板中的表单输入,我将其转换为我通过
提供的 LiveView
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content");
let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}, hooks: Hooks});
//// Connect if there are any LiveViews on the page
liveSocket.connect();
按照惯例。然而,一旦安装了 LiveSocket,tinymce-plugin 就不再工作了,并且只剩下一个基本的 textarea 字段,在该字段上执行预期的验证。
有没有办法将这个外部库加载到 LiveView 中?我试图通过钩子
调用包含 tinymce.init 步骤的函数
let Hooks = {}
Hooks.LoadIt = {
mounted() {
tinyinit(tinymce)
}
}
但这不起作用。有谁知道这个问题的解决方案吗?
您可以将挂钩附加到元素上。像这样:
<textarea ... phx-hook="LoadIt" id="your-unique-id"></textarea>
并在挂载中初始化它:
Hooks.LoadIt = {
mounted() {
tinymce.init({
selector: this.el, # <- attribute referencing the bound DOM node.
plugins: ...
})
}
}
了解有关客户端挂钩的更多信息:https://hexdocs.pm/phoenix_live_view/js-interop.html#client-hooks
我正在尝试将 WYSIWYG-Editor tinymce 与包含文本区域字段的 phoenix LiveView 集成。在使用 LiveView 之前,我将其作为 node_module 库导入到 app.js 文件
import tinymce from '../node_modules/tinymce/tinymce'
然后通过
初始化tinymce.init({
selector: 'textarea',
plugins: ...
})
为了能够验证模板中的表单输入,我将其转换为我通过
提供的 LiveViewlet csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content");
let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}, hooks: Hooks});
//// Connect if there are any LiveViews on the page
liveSocket.connect();
按照惯例。然而,一旦安装了 LiveSocket,tinymce-plugin 就不再工作了,并且只剩下一个基本的 textarea 字段,在该字段上执行预期的验证。
有没有办法将这个外部库加载到 LiveView 中?我试图通过钩子
调用包含 tinymce.init 步骤的函数let Hooks = {}
Hooks.LoadIt = {
mounted() {
tinyinit(tinymce)
}
}
但这不起作用。有谁知道这个问题的解决方案吗?
您可以将挂钩附加到元素上。像这样:
<textarea ... phx-hook="LoadIt" id="your-unique-id"></textarea>
并在挂载中初始化它:
Hooks.LoadIt = {
mounted() {
tinymce.init({
selector: this.el, # <- attribute referencing the bound DOM node.
plugins: ...
})
}
}
了解有关客户端挂钩的更多信息:https://hexdocs.pm/phoenix_live_view/js-interop.html#client-hooks