Ckeditor通过Ajax更新数据

  做编辑Get info的时候用ajax请求后端数据,然后赋值到超文本框上。一般分为两种,一种是同步,一种是异步。

异步情况下可以参考 https://my.oschina.net/u/3142419/blog/1621789 ,该1思路是异步拿到数据后,销毁组件,然后再次实例化组件。 思路2是用官方的方法,SetData后回调进行一个渲染,不过第2个我没有试验成功。

注意:

如果不是必须要用异步的话,其实可以把ajax改成同步就可以很简单的赋值给Ckeditor富文本框了。

如下是我的组件实例化,因为我需要用的东西比较多,所以设置的属性也稍微多上几个。

    // instance, using default configuration.
    var myeditor = CKEDITOR.replace('editor1', {
        format_tags: 'p;h1;h2;h3;h4;h5;h6;pre;address;div',
        filebrowserImageUploadUrl: UploadEditor + '?token=' + token,
        removeDialogTabs: 'image:advanced;link:advanced',
        removePlugins:'elementspath,resize',
        codeSnippet_theme: 'zenburn',
        height:'300'
    });
    CKEDITOR.stylesSet.add('my_styles', [
        // Block-level styles.
        {name: 'Blue Title', element: 'h2', styles: {color: 'Blue'}},
        {name: 'Red Title', element: 'h3', styles: {color: 'Red'}},

        // Inline styles.
        {name: 'CSS Style', element: 'span', attributes: {'class': 'my_style'}},
        {name: 'Marker: Yellow', element: 'span', styles: {'background-color': 'Yellow'}}
    ]);
    CKEDITOR.config.stylesSet = 'my_styles';
    CKEDITOR.config.image_previewText = ' '

 

如下是我获取数据进行一个赋值,注意主要是这个  async: false,就是同步,这样就可以简单的使用 setData

//get info function
function getInfo(){
    $.ajax({
        url: apiOnlineCourseThemeGet,
        type: 'GET',
        async: false,
        data: {id:onlineCourseThemeId},
        success: function(json) {
            myeditor.setData(json.data.onlineCourseThemeDetails)

        }
    });
}

 

posted @ 2021-04-20 10:45  深山雪人  阅读(171)  评论(0编辑  收藏  举报