Как игнорировать setValue в событии .on(‘input’) (ace.js )

#javascript #ace-editor

#javascript #ace-редактор

Вопрос:

 editor.on('input', function(e, target) {
    console.log(true);
});

editor.getSession().setValue('value'); // How not to handle it in the input event?
  

Как это сделать?

Ответ №1:

Событие ввода запускается после тайм-аута и срабатывает только один раз, если вы быстро внесете несколько изменений. если вы используете событие изменения, вы можете сделать

 var ignore, changed
editor.on('input', function() { // async and batched
    if (changed) console.log(e);
    changed = false
});
editor.on('change', function() { // sync for each change
    if (!ignore) changed = true
});
ignore = true
editor.getSession().setValue('value');
ignore = false
  

Комментарии:

1. Таким change образом, событие Ace работает как input событие DOM, мгновенно срабатывая при каждом введенном символе, что отличается от традиционно бесполезного change события DOM, которое срабатывало только при размытии…