使用 ActionText 时,f.rich_text_area
呈现一个 Trix 编辑器。当我向编辑器添加附件时,它会自动开始直接上传。如果我在上传完成之前提交表格,显然文本中会缺少附件。我知道在上传开始之前刚刚添加trix-attachment-add
附件时会触发该事件。我可以添加什么事件侦听器以便知道上传何时完成?
问问题
482 次
1 回答
1
如果您使用的是 Stimulus.js,以下控制器将禁用提交按钮,直到所有附件都完成上传。
控制器:
// form-with-trix-controller.js
export default class extends Controller {
static targets = ['submit']
disableSubmitIfTrixAttachmentsUploading(/*event*/) {
const { hasTrixAttachmentsUploading } = this
this.submitTargets.forEach(submitTarget => submitTarget.disabled = hasTrixAttachmentsUploading)
}
get hasTrixAttachmentsUploading() {
return this.trixAttachments.some(attachment => attachment.isPending())
}
get trixAttachments() {
return this.trixElements.flatMap(trix => trix.editor.getDocument().getAttachments())
}
get trixElements() {
return Array.from(this.element.querySelectorAll("trix-editor"))
}
}
在包装 Trix 控制器的表单中:
<form data-controller="form-with-trix" data-action="trix-change->form#disableSubmitIfTrixAttachmentsUploading">
<input type="submit" name="commit" value="Save File" data-form-target="submit">
</form>
基于来自 Hey.com 的代码。
于 2020-08-31T17:26:02.860 回答