#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, которое срабатывало только при размытии…