2013-09-08 2 views
1

Я хочу написать приложение углов, которое объединяет Ace editor с панелью инструментов для сохранения + отмены/повтора. Я создал базовый plunk для разработки этого приложения.В Угловом приложении, как интегрировать редактор Ace с панелью инструментов?

Как вы должны уметь рассказать с панели, есть директива «панель инструментов», которая отвечает за визуализацию панели инструментов (с тремя кнопками: «Сохранить», «Отменить» и «Повторить») и директивой «ace», ответственной за визуализацию редактора Ace. Обе директивы находятся в 'directives.coffee'.

Панель должна вести себя так, как можно было бы ожидать от панели инструментов редактора текста, то есть:

  • Кнопка сохранения должна быть включена тогда и только тогда документ изменился с момента его последнего сохранения
  • При нажатии сохранения , состояние документа должно измениться на нетронутое (то есть, не загрязняться), а кнопка сохранения должна вернуться в состояние отключения
  • Кнопка отмены должна быть включена, если есть хотя бы одна операция, которая может быть отменена
  • Когда нажатие на отскок на, редактор должен сказать, чтобы отменить последнюю операцию, и кнопка отмены должна быть обновлена ​​согласно вышеуказанной точке
  • Кнопка повтора должна быть включена, если есть хотя бы одна операция, которую можно переделать
  • При нажатии кнопки кнопка повтор, редактор должен быть сказан, чтобы повторить последнюю операцию и кнопку повтора должен быть обновлен в соответствии с указанными выше точками

так что мой вопрос, как я могу разработать угловое связывание между редактором Ace и приложением панели инструментов, чтобы выполнить описанную выше спецификацию?

ответ

1

Я не уверен, что вам нужно сделать на угловой стороне, но туз предоставляет методы для всего этого

var undoManager = editor.session.getUndoManager() 
undoManager.isClean() 
undoManager.markClean() 
undoManager.hasUndo() 
undoManager.hasRedo() 

Обратите внимание, что isClean базируется на стеке отмен не по значению документа, таким образом, запись и удаление письмо включит кнопку сохранения, хотя значение не будет изменено.

Также лучше использовать editor.on("input", function(){}) вместо 'change', так как входное событие запускается асинхронно.