JQuery Mobile 1.0 - самопубликация страниц, вызывающих дублирование диалогов или записей истории - PullRequest
0 голосов
/ 06 декабря 2011

Если вы перейдете к http://jsbin.com/ibozun/2,, нажмите «Добавить элемент», а затем нажмите «Сохранить», вы увидите, что второй диалог открывается поверх первого.Форма в диалоге публикуется сама по себе (действие не определено) - это дизайн.Поскольку диалоговое окно дублировалось, теперь вам нужно нажать «Отмена» 2 раза, чтобы закрыть его.

Вариант использования для этой настройки - страница MS MVC3 с ненавязчивой проверкой JQuery.Скрипты по умолчанию (другими словами, у меня нет пользовательских валидаторов - скрипты прямо из MS) вызывают ajax-вызов на сервер, и JQM воспринимает это так же, как самопубликующуюся форму, поэтому вы получаете дублирующийся диалогесли проверка не пройдена.

Аналогичная ситуация происходит, если вторая страница в виде страницы, а не диалоговое окно - отправка формы для себя приводит ко второй записи истории в браузере, поэтому, чтобы вернуться на страницу 1,вам нужно нанести ответный удар 2 раза.

Я считал, что это ошибка в JQM, но после отправки ошибки на GitHub мне сказали, что это ожидаемое поведение.Итак, предполагая, что такое поведение не изменится в рамках, как я могу предотвратить это для моего экземпляра (предпочитая НЕ редактировать JS для структуры)?Нужно ли мне писать свои собственные вызовы ajax для проверки, чтобы я не мог знать JQM, что что-то случилось?Это кажется прискорбным ...

Одна идея, которая у меня возникла, заключалась в том, чтобы обнаружить, что nextPage и текущая страница одинаковы в "pageHide", и самостоятельно манипулировать диалогом / историей, но безуспешно.

Заранее спасибо!

1 Ответ

0 голосов
/ 07 декабря 2011

Во-первых, в примере нет дублирования диалога.Во-вторых, мой ответ и объяснение, почему трудно решить проблемы истории с публикацией на той же странице для пользователей библиотеки здесь .Этот пример особенно труден, потому что он также находится в диалоговом окне, на которое мы не поддерживаем ссылки, поэтому отключение ajax для формы (то есть принудительная перезагрузка), которое будет работать, если оно будет встроено в страницу, не будет работать.

Быстрое решение здесь - переключить диалоговое окно на страницу и добавить в форму атрибут данных data-ajax=false.Имейте в виду, что это вызывает флэш / перезагрузку страницы и требует, чтобы документ формы был полностью сформирован с head, включая javascript, css и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...