使用 HTMX 从服务器获取文本更新 Quill Editor 的内容

news/2024/12/22 0:14:02/

使用 HTMX 可以用很简单的代码,通过 AJAX 的访问,向 WEB SERVER 请求数据。

如果请求来的数据直接用来更新一个 <div></div> 的内容,无需写代码,很简单就能搞定。代码如下:

<button hx-get="GetContent" hx-target="#MyLabel" hx-swap="innerHTML">更新DIV内容</button><div id="MyLabel">

上述代码的解释:

1. 服务器端有一个 http://127.0.0.1:8080/GetContent  的 URL,访问它可以获得一个 HTML 字符串。比如:<strong>这是一个</strong>测试文字

2. hx-target= 后面的 MyLabel 就是底下那个 <div id="MyLabel">;

3. hx-swap="innerHTML" 说的是把 HTMX 通过 HTTP GET 从服务器拿到的那串字符串,替换那个 DIV 的 innerHTML;

上面的代码,页面上呈现一个按钮,点击按钮,页面上就显示出从服务器端获得的字符串。

但是,Quill Editor 的内容不能这样直接替换

我测试过,直接这样替换,肯定不行。

必须是采用 JavaScript 去调用 Quill 的实例对象来填入内容。代码如下:

const quill = new Quill("#editor", {modules: {toolbar: [{ header: [1, 2, 3, 4, 5, 6, false] }, // 标题'bold',             // 加粗'italic',           // 斜体'blockquote',       // 引用'link',             // 超链接'image',            // 插入图片'video',            // 插入视频'code',             // 行内代码'code-block',       // 代码块{ list: 'bullet' }, // 无序列表{ list: 'ordered'}, // 有序列表'strike',           // 删除线{ 'align': [] },    // 对齐方式'formula'           // 公式]},theme: 'snow'});//创建好 quill editor 对象实例后,用以下代码可以把内容写进去:s = 'hello <strong>world</strong>';quill.root.innerHTML = s;

如何把 HTMX 从服务器读取的内容写进 quill Editor 里面去?

这个问题嘛,我问了问 ChatGPT,它回答的结果不能正确执行,但是给了我思路。来回修改代码测试了一下,发现以下代码是可以运行的:

按钮的 HTML 代码(包含 HTMX 的用法)如下
   <button hx-get="/GetContent" hx-swap="none" hx-on="htmx:afterSwap: updateQuill(event)">从服务器读取文本内容</button>

上面的按钮,绑定了 HTMXAJAX 方法,然后调用 UpdateQuill 函数,把获取到的文本内容放进 Quill Editor 里面。这里一定要加上 hx-swap="none" 否则按钮上面的文字也会被替换掉。

UpdateQuill 函数,代码如下:
       function updateQuill(event) {// 从 HTMX 事件中获取响应内容var newContent = event.detail.xhr.responseText;quill.root.innerHTML = newContent; // 更新 quill editor 的内容console.log(qll.root.innerHTML);}

总结一下:

这里的技术要点有 2 个:

1. HTMX 从服务器读取到字符串以后,那个字符串在哪里?因为它封装得太好了,正常使用,它直接就用获取到的字符串把页面上的目标元素的 innerHTML 或者 outerHTML 给替换掉了。没机会拿到这个字符串。

2. 它如何去调用一个 JavaScript 函数,通过这个函数去向 Quill Editor 写入文本内容。

在上述代码中,HTMX 通过描述的方式调用了函数,向函数传递了一个 event 参数。这里的 event 参数是 HTMX 带来的。

各位,看完觉得有干货的话,点个赞?


http://www.ppmy.cn/news/1535007.html

相关文章

论Microsoft Visual Studio C++有多油饼

#1 Microsoft Visual Studio C 2023&#xff1a; 必须安装在C盘 为啥&#xff1f; 安其他盘能亖啊&#xff1f; 真有病 #2 Microsoft Visual Studio C 2013&#xff1a; 每个硬盘必须都腾出至少8个G的空间 不是我安在这个盘不就是为了其他盘没空间吗&#xff1f; 合着…

SOMEIP_ETS_166: SD_TestFieldUINT8

测试目的&#xff1a; 验证DUT能够通过Getter和Setter方法正确地发送和接收TestFieldUINT8字段的值。 描述 本测试用例旨在确保DUT的ETS能够响应Tester的请求&#xff0c;正确地使用Getter方法获取TestFieldUINT8的值&#xff0c;以及使用Setter方法设置新的值。 测试拓扑&…

前端Vue项目的自动打包、上传与部署

文章目录 前言思路与流程脚本实现1. 打包前端项目2. 上传前端项目4. 传递密码5. 代码优化完整脚本结语前言 在实际项目开发中,并不是所有项目都会配置 CI/CD 流程,特别是在中小型团队或者公司内部测试环境中,很多时候我们仍然需要手动打包、上传和部署项目。这个过程虽然简…

【HarmonyOS NEXT】实现防截屏功能

【需求】 登录不允许截屏验证码页不允许截屏首页允许截屏 【API】 方式一&#xff1a; 当app只有一个窗口时&#xff0c;可以使用getLastWindow window.getLastWindow(context).then((lastWindow)>{ lastWindow.setWindowPrivacyMode(flag) })方式二&#xff1a; 当app…

TB6612电机驱动模块(STM32)

目录 一、介绍 二、模块原理 1.原理图 2.电机驱动原理 三、程序设计 main.c文件 Motor.h文件 Motor.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件&#xff0c;它具有大电流 MOSFET-H 桥结构&#xff…

ThreadLocal内存泄漏分析

一、ThreadLocal内存泄漏分析 1.1 ThreadLocal实现原理 1.1.1、set(T value)方法 查看ThreadLocal源码的 set(T value)方法&#xff0c;可以发现数据是存在了ThreadLocalMap的静态内部类Entry里面 其中key为使用弱引用的ThreadLocal实例&#xff0c;value为set传入的值。核…

【AI知识点】负对数似然损失函数(Negative Log-Likelihood Loss,NLL)

负对数似然损失函数&#xff08;Negative Log-Likelihood Loss&#xff0c;NLL&#xff09; 是机器学习&#xff0c;尤其是分类问题中常用的一种损失函数。它用于衡量模型预测的概率分布与真实标签之间的差异。负对数似然损失函数的目标是最大化正确类别的预测概率&#xff0c;…

C#通用文档识别挂接示例、手写体识别接口

通用文档识别服务接口支持扫描文档、长微博、自然场景下的各种印刷体文字、手写体文字、繁体文字、英文、阿拉伯文等文字的识别&#xff0c;提供免费测试与在线体验服务 部署方式灵活多样&#xff0c;支持标准化HTTP、WebService接口集成&#xff0c;支持私有化部署&#xff0c…