是否可以序列化Ace Session对象?

 摩西摩西 发布于 2023-02-12 18:00

我想序列化和存储Ace Session对象,所以我可以打开一个"文件"并恢复所有内容,值,选择,光标位置,模式等.

我试过了JSON.stringify(session),它抛出一个循环错误.

有任何想法吗?

1 个回答
  • 最简单的版本

    var session = editor.session
    state = {}
    state.value = session.getValue();
    state.selection = session.selection.toJSON()
    state.options = session.getOptions()
    state.mode = session.getMode().$id
    state.folds = session.getAllFolds().map(function(fold) {
        return {
            start       : fold.start,
            end         : fold.end,
            placeholder : fold.placeholder
        };
    });
    state.scrollTop = session.getScrollTop()
    state.scrollLeft = session.getScrollLeft()
    
    JSON.stringify(state)
    

    并恢复

    session.setValue(state.value)
    session.selection.fromJSON(state.selection)
    session.setOptions(state.options)
    session.setMode(state.mode)
    try {
        state.folds.forEach(function(fold){
            session.addFold(fold.placeholder, 
                Range.fromPoints(fold.start, fold.end));
        });
    } catch(e) {}
    session.setScrollTop(state.scrollTop)
    session.setScrollTop(state.scrollLeft)
    

    这不包括恢复undomanager,这是可行但有点棘手.你可以尝试碰这个问题https://github.com/ajaxorg/ace/issues/1452

    2023-02-12 18:02 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有