javascript - 在summernote中添加动态自定义按钮作为数组
问题描述
我使用所见即所得的编辑器“summernote”和codeigniter。我想将我自己的按钮添加到单击时插入特定文本的工具栏。Summernote 文档中描述了这种情况。
夏日笔记:
$('#model_txt').summernote({
height: 250,
toolbar: [
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough', 'superscript', 'subscript']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['height', ['height']]
]
});
但是我分别获得了按钮名称,即从数据库中单击时插入的文本。我通过调用一个 PHP 函数的 ajax 调用来获取数据,该函数从查询中打印数据。
AJAX 调用:
var all_vars = null;
$.ajax({url: "get_vars", success: function(result){
all_vars = result.split(";");
});
现在我有一个包含名称的数组(例如:)all_vars[0]
。但我不知道如何将名称作为按钮插入工具栏中...你能帮帮我吗?
没有人能帮助我吗?我用 JS 函数 eval() 试试这个,它可以工作,但我认为它不是最好的解决方案......
“127.0.0.1/create_var_buttons”上的 PHP 函数动态创建 JS 代码。
<script>
$(document).ready(function() {
var resturl = 'http://127.0.0.1/create_var_buttons';
$.ajax({
url: resturl,
success: function(data){
eval(data);
}
});
});
解决方案
我之前遇到过同样的需求并这样做:
我必须声明一个变量来保存 Summernote 的工具栏数组:
var toolbar = [ ['style', ['bold', 'italic', 'underline', 'clear']], ['insert', ['picture', 'link']], ['misc', [ 'undo', 'redo', 'codeview']], ['para', ['ul', 'ol', 'paragraph']], ['fontsize', ['fontsize', 'height']], ['color', ['color']], ['forecolor', ['forecolor']], ['custom', ['forcarJustificar']] ];
另一个将数据保存到summernotes的“按钮”属性:
var opt_btns_custom = { forcarJustificar: forcarJustificar };
保存整个summernote选项的另一个变量:
var sm_options = { 高度:altura,工具栏:工具栏,按钮:opt_btns_custom,回调:{} }
然后我编写了下面的函数,我为需要创建的每个按钮调用了 Ajax 的 .done():
函数 addBtnText(b_content,b_tooltip,文本){
var sm_botao_custom = function (context) { var ui = $.summernote.ui; options = { contents: b_content, tooltip: b_tooltip, click: function () { context.invoke('editor.insertText', text); } } var button = ui.button(options); return button.render(); } i = Math.floor(Math.random() * (1000 - 1 + 1)) + 1; toolbar.push(['custom', ['sm_botao_custom_'+i]]); opt_btns_custom['sm_botao_custom_'+i] = sm_botao_custom; //Restart SM to apply the created buttons $('#d_summernote').summernote('destroy'); $('#d_summernote').summernote(sm_options);
}
OBS:我使用随机数 (i) 以避免与 SM 内的按钮发生冲突问题。
推荐阅读
- android - 如何获取屏幕上未显示的 RecyclerView 项目的数据?
- java - 基于套接字的应用程序的非确定性行为
- psql - Google Cloud SQL Postgres(Set Session_Replication_Role='Replica') || 布卡多
- javascript - 确认 Google 助理的异步操作
- python - Python - 将列表变成卷轴
- azure-functions - Azure 代理超时
- java - javax.persistence.PersistenceException:EntityManager 没有持久性提供程序
- javascript - 如何离线保存使用 ember-cli-fastboot 呈现的网页?
- python - 多数的幂
- java - 将 JAXB 元素编入 SOAP 处理转义字符