TinyMCE внутри виджета Durandal - обратный вызов после перехода по маршруту?
Я пытаюсь использовать TinyMCE в виджете, но это не удается. Я думаю, что проблема в том, что представление все еще скрыто, когда "viewAttached" запущен. Кажется, что TinyMCE имеет ошибку / особенность (прочитайте последний абзац) и не может быть отображена, когда цель (textarea) скрыта (или внутри скрытого div).
Я получил это, выполнив работу в setTimeout, но это дерьмо.
Есть ли обратный вызов, который я мог прикрепить, который запускается после того, как представление не скрыто (после завершения перехода)?
2 ответа
Я нашел одно решение:
Явно подпишитесь на наблюдаемую "isNavigating" маршрутизатора и добавьте TinyMCE, когда значение "isNavigating" станет ложным.
Тем не менее: это имеет эффект мерцания - вы видите текстовую область, а затем она заменяется на TinyMCE... но это не проблема Дюрандаль ИМО.
Редактировать 1
Наконец, я думаю, что лучшее решение (пока... перейдите по ссылке ниже для темы по теме) - это сделать setTimeout(xyz(), 0) - я видел много людей, использующих эту технику, и она предотвращает мерцание.
У Durandal есть обратные вызовы, когда вы используете композицию - вы просто добавляете функцию в вашу viewModel с правильным именем. В вашем случае вы бы использовали viewAttached:
Вот документы: http://durandaljs.com/documentation/Interacting-with-the-DOM/