2014-09-22 3 views
0

Мне бы хотелось, чтобы функция вызывалась, когда редактор ACE заканчивает разбор нового исходного кода, чтобы, например, добавить слушателя событий щелчка на каждый последующий узел DOM .ace_identifier. До сих пор я не смог найти правильное событие ACE использовать для этого и просто следующий код ничего не делает:ACE Editor «end of parsing» event

editor = ace.edit $('#editor') 
    editor.setReadOnly true 

    // editor change event - never triggered in this case 
    editor.getSession().on 'change', (e) -> 
     console.log e 

    // changing the language makes ACE parse the source code and generates 
    // a new DOM... 
    editor.getSession().setMode "ace/mode/javascript" 
    // ... but a this point, $('.ace_identifier') returns a empty array 
    // instead of the expected list of ace_identifiers created 
    console.log $('.ace_identifier') 

ответ

1

Там нет события для «конца разбора», вы могли бы использовать afterRender событие на editor.renderer , Но туз использует dom как холст, создавая узлы только для видимой части текста и часто отбрасывая и перерисовывая всю вещь, поэтому добавление прослушивателей событий к dom-узлам внутри редактора ace - плохая идея.

Вместо этого вы можете добавить слушателя в редактор и использовать session.getToken, чтобы получить токен под курсором.

Это обсуждение в асе Google группы может быть полезным https://groups.google.com/d/msg/ace-discuss/XFnf3-3gcAY/u7OIMdHkGGwJ

+0

С 'afterRender' событием, я действительно в состоянии выбрать' .ace_identifier' Домс но установка обработчика событий нажми на него не работает. –

+0

Ну вы можете добавить указатель-события: авто стиль к нему. Но поскольку я сказал, что добавление обработчиков событий к каждому узлу является крайне плохой идеей, вы должны использовать editor.on (вместо этого «click» listener и 'session.getToken'. –

+0

Как вы узнали об этом« указателе-событиях », Я потратил так много энергии и времени именно из-за этого! Я буду использовать оптимизированный путь позже. Это для прототипирования до сих пор. –

 Смежные вопросы

  • Нет связанных вопросов^_^