TinyMCE внутри виджета Durandal - обратный вызов после перехода по маршруту?

Я пытаюсь использовать TinyMCE в виджете, но это не удается. Я думаю, что проблема в том, что представление все еще скрыто, когда "viewAttached" запущен. Кажется, что TinyMCE имеет ошибку / особенность (прочитайте последний абзац) и не может быть отображена, когда цель (textarea) скрыта (или внутри скрытого div).

Я получил это, выполнив работу в setTimeout, но это дерьмо.

Есть ли обратный вызов, который я мог прикрепить, который запускается после того, как представление не скрыто (после завершения перехода)?

2 ответа

Решение

Я нашел одно решение:

Явно подпишитесь на наблюдаемую "isNavigating" маршрутизатора и добавьте TinyMCE, когда значение "isNavigating" станет ложным.

Тем не менее: это имеет эффект мерцания - вы видите текстовую область, а затем она заменяется на TinyMCE... но это не проблема Дюрандаль ИМО.

Редактировать 1

Наконец, я думаю, что лучшее решение (пока... перейдите по ссылке ниже для темы по теме) - это сделать setTimeout(xyz(), 0) - я видел много людей, использующих эту технику, и она предотвращает мерцание.

https://groups.google.com/forum/?fromgroups

У Durandal есть обратные вызовы, когда вы используете композицию - вы просто добавляете функцию в вашу viewModel с правильным именем. В вашем случае вы бы использовали viewAttached:

Вот документы: http://durandaljs.com/documentation/Interacting-with-the-DOM/

Другие вопросы по тегам