【问题标题】:Ace editor trigger event using javascript使用 javascript 的王牌编辑器触发事件
【发布时间】:2023-03-21 04:33:02
【问题描述】:

有没有类似的

editor.getSession.trigger('change')

我想要这个的原因是因为编辑器进出新的,所以当它重新出现时,我需要它来做正常的“改变”事情,但我不想等待用户输入?

目前我有

editor.getSession().on('change', function(){
    editorChangeHandler()
})

我只记得

        editorChangeHandler()

当我需要时,但editor.getSession.trigger('change') 更好。

【问题讨论】:

    标签: javascript ace-editor


    【解决方案1】:

    editor.session._emit('change') 会触发 editorChangeHandler,但虚假的更改事件会破坏撤消历史记录。

    【讨论】:

    • 我尝试了这种方法并得到了错误ace.js:7973 Uncaught TypeError: Cannot read property 'row' of undefined
    • 我不得不这样做:editor.getSession()._emit('change', {start:{row:0,column:0},end:{row:0,column:0},action:'insert',lines: []})
    【解决方案2】:

    我想要这个的原因是因为编辑器进出新的, 所以当它重新出现时,我需要它进行正常的“改变” 东西,但我不想等待用户输入?

    您可以使用underscore.js 尝试其他解决方案。

    变化:

    editor.getSession().on('change', function(){
        editorChangeHandler()
    })
    

    到:

    editor.getSession().on('change', _.debounce(function() {
        editorChangeHandler()
    }, 100))
    

    当您触发更改时,它就像:

    editor.setValue('my change..');
    

    那么它会按照你的意愿行事:

    editor.getSession.trigger('change')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多