CKEditor通过onClick更新内容

时间:2018-12-05 12:52:01

标签: javascript plugins ckeditor closures

我有一小部分HTML代码存储在数据库中。我想列出所有这些名称(它们的名称),然后在onClick事件中,将实际的html代码粘贴到textarea(内容区域)中。

我设法在第二个TAB中列出了这些小表的标题(由于它们的整体名称)(理想情况下,将有三个选项卡显示不同的表,所以我想也很重要): / p>

        // Definition of the Second dialog tab (page).
    {
        id: 'tab-tab2',
        label: 'Tables - various html',
        elements: [
            {
                // Another text field for the abbr element id.
                type: 'html',
                html: '<div id=main-container></div>',
                onLoad: function(element) {

                    jQuery.ajax({
                        url: '/tabletemplate/tabletemplates/',
                        success: function (data) {
                            var tables = data.tables;

                                for (var i = 0; i < tables.length; i++) {
                                    $('#main-container').append(
                                        '<div class="html_box" style="border: 1px solid red; margin: 5px;">' +
                                        tables[i][1] +
                                        '</div>'
                                    );
                                }

                        },

                    });

                }
            }
        ]
    }

现在,我想将 tables[i][2] 的内容粘贴到当前CKEditor实例的文本区域中。

我创建了一个基本上可以做到这一点的函数:

editor.insertHTML(html);

,并在onClick (onClick = 'editor.my_function(tables[i][2])')上被调用,但是我的控制台不断返回未定义的此-n-错误。

有什么主意吗?


S O L U T I O N

基于输入:

我想出了以下代码,正是我想要实现的:

                elements: [
                {
                    // Another text field for the abbr element id.
                    type: 'html',
                    id: 'to_id_jest',
                    html: '<div id=main-container></div>',
                    onLoad: function( a ) {

                        var dlg = this;
                        jQuery.ajax({
                            url: '/tabletemplate/tabletemplates/',
                            success: function (data) {

                                var tables = data.tables;

                                //dlg.add('Option 1', '1');
                                    for (var i = 0; i < tables.length; i++) {
                                        (function(i){
                                            $('#main-container').append(
                                                '<div class="html_box" id="my_div_' + i + '">' +
                                                tables[i][1] +
                                                '</div>'
                                            );
                                            CKEDITOR.document.getById( 'my_div_' + i ).on( 'click', function(  ) {
                                                var dialog = this.getDialog();
                                                dialog.hide();
                                                dialog._.editor.insertHtml( tables[i][2] );
                                            }, dlg );
                                        })(i);
                                    }

                            },
                        });
                    }
                }
            ]

0 个答案:

没有答案
相关问题