Подключение формы к объекту Javascript (и другим рекомендациям) - PullRequest
0 голосов
/ 02 января 2009

Я годами использую javascript для облегчения функциональности сайтов - манипулирования DOM и т. Д. - но сейчас я начинаю исследовать его использование для выполнения гораздо большей работы (в сочетании с PHP). Я только начал изучать OO JS, и я все еще пытаюсь разобраться с лучшими практиками и шаблонами проектирования, которые хорошо с ним работают.

Если быть более конкретным, мой вопрос, может ли кто-нибудь здесь предложить методы для соединения формы с объектом javascript?

В моей текущей реализации у меня есть объект JS, который можно редактировать (довольно большой) формой. Когда я создаю экземпляр объекта, я присоединяю наблюдателя onchange к форме, чей обратный вызов синхронизирует поля формы с параметрами объекта. Я обрабатываю отправку формы через AJAX - также существует периодический запрос, который сохраняет временную версию информации о форме в БД mySQL. Меня интересует, возможно ли легко управлять синхронизацией в другом направлении - при замене объекта обновляются поля формы (например, при сбросе формы).

Мне интересно знать, является ли этот подход правильным / разумным, и в целом мне было бы очень интересно услышать совет относительно обработки формы OOJS.

Приветствия заранее:)

(я использую Prototype, кстати)

Ответы [ 3 ]

2 голосов
/ 07 января 2009

Вы можете использовать $("form").serialize(true);

http://www.prototypejs.org/api/form/serialize

Вам не нужно событие onchange, вы можете просто вызывать метод serialize () каждый раз, когда вам нужно получить данные формы.

0 голосов
/ 03 января 2009

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

Возможно, вы захотите взглянуть на библиотеку виджетов, если хотите получить больше такого рода низкоуровневой обработки форм бесплатно. Не пробовал те, которые построены на основе прототипа; другие возможности включают в себя YUI.

Обновление модели с сервера может быть довольно простым. Обычно вы запрашиваете AJAX-запрос и передаете серверу обратно либо diff, если он их знает, либо просто отметку времени каждого обновления объекта, отправляете детали нового объекта на стороне клиента при каждом обновлении, и клиент сам решает, как объединить его с любыми изменениями, внесенными пользователем за это время.

0 голосов
/ 02 января 2009

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

...