这是指向鹅毛笔编辑器工具栏

2024-03-17

I use Quilljs https://quilljs.com/我网站上的文本区域。标准编辑器不支持将图像上传到服务器,因此我必须实现自定义处理程序。文档中写着下列: https://quilljs.com/docs/modules/toolbar/#handlers

处理函数将绑定到工具栏(因此使用它会 参考工具栏实例)并传递了 value 属性 如果相应的格式处于非活动状态,则输入,否则返回 false。

这对我来说实际上是一个问题,我不知道如何以干净且“正确”的方式解决它。我构建了一个角度应用程序,并编写了一个用于图像上传的自定义处理程序。此自定义图像处理程序应借助角度服务将图像上传到服务器。数据服务在应用程序中全局提供,并且是我的组件的成员,我可以通过以下方式访问它this.dataService。但点击工具栏中的图片上传图标后,this已绑定到工具栏,我无法再访问我的数据服务。我可以避免工具栏的这个边界吗?

明确地说。假设我使用以下代码创建了一个鹅毛笔编辑器:

this.editor = new Quill('#editor', {
      modules: { toolbar: "#toolbar"},
      placeholder: 'Some Placeholder',
      theme: 'snow'
});

现在我将自定义处理程序添加到图像图标

this.editor.getModule("toolbar").addHandler("image", imageHandler);

和我的处理函数例如:

imageHandler(event) {
  this.dataService.addImage(event.file);
}

它使用我已经实现和测试的 dataService 。但this.dataService不存在,因为this现在绑定到工具栏。我使用组件的构造函数初始化了服务。

constructor(private dataService: DataService) {

}

当我打电话时this.dataService在构造函数中,然后可以找到它并且边界很好,但我需要在图像处理函数中调用它以将文件发送到服务器。

此致, 斯文


解决这个问题最简单的方法就是改变

this.editor.getModule("toolbar").addHandler("image", imageHandler);

into

this.editor.getModule("toolbar").addHandler("image", imageHandler.bind(this));

现在您可以在图像处理函数中访问组件变量/成员。工具栏不再是焦点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这是指向鹅毛笔编辑器工具栏 的相关文章

  • nuxt如何访问javascript文件中的env

    我无法在 nuxt 2 15 之外访问我的环境变量 当我部署时我可以看到 nuxt context config在浏览器中有正确的变量 但在自定义js文件中我无法访问process env baseURL它返回未定义 nuxt config
  • iOS Javascript DOM“冻结?”

    这里有几个问题 有没有办法阻止 iOS 在滚动时冻结页面上的 javascript 当您在另一个选项卡中或切换应用程序时 iOS 是否会冻结 JavaScript iOS 上还有其他主要的 javascript 限制吗 iOS 6 x 会暂
  • Firebase HTTP Cloud Functions - 读取数据库一次

    我有 Firebase HTTPs 功能 该函数需要根据查询参数从 Firebase 数据库读取值 并根据该数据返回结果 Firebase JS SDK 表示要使用以下命令来执行此操作 return firebase database re
  • jQuery show() 和 hide() 的更流畅替代方案

    我有一个带有隐藏列的页面设置 使用 jQuery show 和 hide 函数将列滑入和滑出 然而 它有点 笨重 并且在显示 隐藏时看起来不太流畅 相比之下 我还有一个使用 jquery UI 手风琴的页面部分 当在这些部分之间切换时 过渡
  • 如何清除画布元素中的多边形区域?

    我使用过clearRect函数 但没有看到多边形的等效函数 我天真地尝试过 ctx fillStyle transparent ctx beginPath ctx moveTo 0 0 ctx lineTo 100 50 ctx lineT
  • Angular2:禁用表单构建器的元素

    我试图在声明后禁用表单构建器的一个元素 因为加载视图后我必须验证某些内容 所以这是我的表单构建器声明 ionViewDidLoad this purchaseDataForm this formBuilder group kms Valid
  • 克隆元素对应表单中所有元素的事件

    我成功克隆了表行 其中包含从数据库检索的值 不过我对它没有什么问题 我对所有元素使用了类 因为克隆会重复 ID 不会出现问题 因为它无法唯一地定位每个元素 使每个元素 行在这里唯一的方法是什么 功能如何工作 当第一次选择框时 所选 ID 的
  • Angular AOT 编译错误“无法确定类组件的模块”

    我有一个 Angular 4 3 2 应用程序 我想在其上执行 AOT 构建 应用程序是使用创建的 angular cli 我有两个组件ng generate以及一个将两者作为声明包含在其中的模块 import PrivateCompone
  • 如何在html中创建字体选择栏

    我想创建一个下拉菜单 在其中我们可以看到所有可用的字体 并且可以选择我们选择的任何字体 我还想创建一个字体颜色选择小部件 存在大量的字体样式 我想知道如何获取所有这些字体以及如何创建一个小部件 用户可以使用该小部件选择他选择的颜色 为了创建
  • 为什么Google的闭包库不使用真正的私有成员?

    我成为 JavaScript 开发人员已经有一段时间了 我一直认为在 JavaScript 中实现私有成员的正确方法是使用 Doug Crockford 在这里概述的技术 http javascript crockford com priv
  • Google App Script postMessage 与收件人窗口的来源不匹配

    我有一个 Google App 脚本部署为Web应用程序 https developers google com apps script guides web 它工作正常 直到今天晚上我发现它无法在 Firefox 或 Chrome 中加载
  • Javascript for 循环跳过最后一个元素

    我有一个数组 根据某些条件从中删除某些元素 当我删除元素时 我会重新启动 for 循环 因为索引已刷新 var k for k 0 k lt this j data length k if condition true this j dat
  • javascript 函数后面括号中的值

    我正在尝试重新利用我在 SO 的答案中找到的一些 Javascript 代码 但我想首先更好地理解它的语法 其大纲是 function root ns factory some code window detectZoom function
  • 安装 npm 包时无法解决依赖关系树错误

    当尝试使用安装 npm 包时npm i命令 我收到以下异常 我尝试重新安装 Node js 包并使用以下命令将代理设置为关闭 set HTTP PROXY set HTTPS PROXY 问题仍然存在 我做错了什么 Update 当我运行以
  • 如何以编程方式切换 Angular 材质扩展面板

    我刚刚开始从事 Angular 4 项目的材料设计工作 我目前正在研究扩展组件 API 规定 https material angular io components expansion overview that 用户无法切换禁用的扩展面
  • CSS 或 Javascript - 如果背景图像未加载,则显示后备文本[重复]

    这个问题在这里已经有答案了 如果徽标图形文件未加载或丢失 如何显示文本而不是徽标 我有带有背景 PNG 图像的 div div class iHaveBgImage this text should be displayed if bg i
  • D3.js - 更改鼠标悬停时元素的不透明度 IF 条件 = false

    我正在制作一个带有过滤器的交互式 D3 js 图表 当用户单击选定的复选框时 该过滤器会显示点 此外 在鼠标悬停事件上 所选点旁边将出现一个弹出窗口 其中包含一些信息 由于图表上的点数量相对较多 因此我选择在取消选中相应复选框时使相关点变得
  • Angular Service Worker - 无法加载资源:服务器响应状态为 504(网关超时)

    我正在使用Angular CLI 1 6 6 and angular service worker 5 2 5 in our Angular 5 2 5应用程序 除了在我们的生产环境中弹出一条错误消息之外 本地精简版服务器以及生产服务器上的
  • JavaScript 开关(真)

    你好 我正在尝试处理 ajax json 响应 这是我的代码 success function j switch true case j choice1 alert choice2 break case j choice2 alert ch
  • Fancybox修改。如何修改 fancybox 以停止在每个画廊的最后一项? (画廊 1 画廊 2 等)[重复]

    这个问题在这里已经有答案了 我正在为我的照片库使用 fancybox 插件 我有多个包含更多项目 照片 的画廊 我想知道如何在点击每个画廊的最后一个项目时停止幻灯片放映 我的 fancybox js 没有被修改 谢谢 您需要添加该选项loo

随机推荐

  • 什么是 Android 的 Smali 代码

    我将学习一些有关 Dalvik VM dex 和 Smali 的知识 我已经阅读过有关 smali 的内容 但仍然无法清楚地了解它在编译器链中的位置 以及它的目的是什么 这里有一些问题 据我所知 dalvik 与其他虚拟机一样运行字节码 对
  • Neo4J - 存储到关系与节点中

    我想知道将数据存储到关系或节点中是否有任何优点或缺点 例如 如果我要将与讨论相关的评论存储到数据库中 我应该将评论数据存储在 评论 关系中 还是通过单独的关系存储在与讨论相关的 评论 节点中 正确的数据模型取决于您需要进行的查询类型 您应该
  • 设计时和运行时的 WPF 数据上下文

    我正在学习 WPF MVVM Light 和 ViewModelLocator 模式 但在主窗口的数据上下文方面遇到了困难 public class ViewModelLocator public ViewModelLocator var
  • 将 C++ 类的定义放入头文件中是一个好习惯吗?

    当我们用 Java Vala 或 C 设计类时 我们将定义和声明放在同一个源文件中 但在 C 中 传统上首选将定义和声明分开在两个或多个文件中 如果我只使用一个头文件并将所有内容都放入其中 就像 Java 一样 会发生什么 是否有性能损失或
  • OS X:如何获取 macOS 上桌面目录的路径?

    如何在 macOS 上以字符串形式获取桌面目录的文件路径 我需要用纯 C 或一些 C 级框架来完成它 这是一个简短的函数 它适用于更多基于 Unix 的系统 而不仅仅是 macOS 并返回current用户的桌面文件夹 include
  • create-react-app 显示了我在生产中的所有代码,如何隐藏它?

    在我的 chrome 源选项卡中 我可以按确切的文件夹位置查看所有文件 我怎样才能隐藏它们 这些不是我之前项目中的问题 该项目是在没有使用 create react app 的情况下制作的 根据create react app 这似乎是正确
  • 下拉菜单推开下面的 div

    当鼠标悬停在菜单上时 子菜单会 拒绝 下一个 div 如何将 div 固定在下面的位置 这是我的代码 box sizing border box body font family Helvetica Neue Helvetica Arial
  • 根据 MySQL 中的半径合并边界框内的长/纬度点

    这是我基本上想要实现的目标的图片 因此 正如标题所说 我想合并长 纬度点 它们的半径 例如 25 公里 触摸长 纬度点的边界框内 这是我非常简单的数据库结构 id long lat 1 90 27137 50 00702 2 92 2713
  • 字段初始化中未处理的异常

    Java 是否有任何语法来管理声明和初始化类的成员变量时可能引发的异常 public class MyClass Doesn t compile because constructor can throw IOException priva
  • Gitlab CI 同时在多个平台上运行

    我有一个针对多个操作系统 Linux Windows MacOS 以及多个 CPU 架构 i386 x86 64 arm Aarch64 编译和打包的 C 项目 为此 我使用 Jenkins 获取源代码并在每个系统上并行运行构建脚本 这是一
  • 在 DateTimePicker 中输入数据时移动到以下日期部分

    我有一个用户请求 我正在尝试满足 我能想到的最简单的解释方法是使用图片进行说明 Essentially the user is typing a ton of dates in Instead of typing the MM 反斜杠 或右
  • 如何在golang中使用LDFLAGS的相对路径

    我正在尝试构建一个使用静态库 a 文件 的 golang 程序 我的项目的目录结构如下 testserver bin pkg src logging testserver libtest a test go test go 中 cgo 的标
  • Laravel 4:使用数据在布局内嵌套视图

    我正在编写一个简单的应用程序 仅依赖于一些路线和视图 我已经设置了总体布局并使用以下内容成功嵌套了模板 路线 php View name layouts master master layout View of master Route g
  • 使用 INDEX-MATCH 进行多个非精确标准的查找 - 查找最符合条件的最近值时出现问题

    我正在尝试使用 INDEX MATCH 使用多个非精确条件进行查找 形式如下 索引 C314 C318 匹配 1 D314 D318 gt G313 E314 E318 gt G314 0 标准是 大于或等于金额 X 公式工作正常 但是当使
  • Flutter 提供的字体系列的完整列表?

    在 Flutter 中 我们可以使用 TextStyle 为文本提供所需的 fontFamily 属性 虽然某些 fontFamily 名称很明显并且确实有效 例如 Arial Courier Times 等 但可用选项的完整列表在哪里 文
  • Flickr 如何阻止人们从该网站下载图像?

    只是想知道 Flickr 如何阻止人们从其网站下载图像 他们用什么 图像上的透明 gif 您仍然可以通过查看 HTML 源并找到图像的实际 URL 来下载实际图像 例如 随机图像 http www flickr com photos 342
  • 同步与 ReadWriteLock 性能

    我试图证明当有很多读者而只有一些作者时同步会更慢 不知怎的 我证明了相反的情况 以 RW 为例 执行时间为 313 ms package zad3readWriteLockPerformance import java util Array
  • PHP 组件对象模型“访问被拒绝”

    我的开发环境是PHP 5 3 IIS 7 5 Window7 Home 我正在开发一个原型应用程序 它需要 PHP 函数 imagewindowgrab 该函数需要调用Windows组件对象模型 COM 我的单行代码是这样的 browser
  • Java 中的注释会导致编译时传递依赖吗?

    一个简单的例子 其中Ent java使用注释并使用必要的 jar 依赖项进行编译 然后Includer java编译后又导入Ent java ent java import javax persistence Entity import j
  • 这是指向鹅毛笔编辑器工具栏

    I use Quilljs https quilljs com 我网站上的文本区域 标准编辑器不支持将图像上传到服务器 因此我必须实现自定义处理程序 文档中写着下列 https quilljs com docs modules toolba