gpt4 book ai didi

javascript - 在 AJAX JSF 请求后重新加载 Javascript

转载 作者:行者123 更新时间:2023-11-30 00:31:42 25 4
gpt4 key购买 nike

好吧,我正在使用 TinyMCE 编辑器,当我尝试打开模式对话框时,tinyMCE 没有呈现。

看:

$(document).ready(function() {

jQuery('.tinymce').on('show',function(e){
initTinymce();
});

});

function initTinymce(){
tinymce.init({
selector: ".tinymce",
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});
}

我的页面:

<div class="form-group">
<label>Conteúdo *</label>
<h:inputTextarea value="#{cursoMB.paginaConteudo.conteudo}"
id="conteudo" required="true"
requiredMessage="O conteúdo é obrigatório"
styleClass="form-control tinymce">
</h:inputTextarea>
</div>

我的 ajax 调用:

<h:commandButton styleClass="btn btn-default" type="button"
value="Criar Página"
actionListener="#{cursoMB.novaPaginaConteudo()}">
<f:passThroughAttribute name="data-toggle" value="modal" />
<f:passThroughAttribute name="data-target"
value="#modalDialogPagina" />
<f:ajax execute="@this" render="modalPagina" />
</h:commandButton>

我该如何解决这个问题?

编辑 1

我尝试使用 jsf.ajax.addOnEvent 但也没有用,tinyMCE 没有呈现(console.log 显示正常):

$(document).ready(function() {

initTinymce();
jsf.ajax.addOnEvent(ajaxHandleTinymce);
});

function ajaxHandleTinymce(data){
console.log('ajaxHandle');
initTinymce();
}

function initTinymce(){
tinymce.init({
selector: ".tinymce",
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});
}

最佳答案

您必须在 ajax 调用后初始化您的小部件,您可以通过这种方式在 f:ajax 上附加一个 javascript 事件监听器:

<f:ajax execute="@this" render="modalPagina" onevent="handleAjaxResponse"/>

function handleAjaxResponse(data) {
if (data.status === 'success') {
initTinymce();
}
}

我不建议在您的案例中使用 jsf.ajax.addOnEvent 回调,因为每次对服务器进行 ajax 调用时,小部件都会被初始化。

关于javascript - 在 AJAX JSF 请求后重新加载 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com