Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2012, 14:29
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

Граматная реализация.
Привет, друзья.

Сей час занимаюсь средней сложности проектом - созданием конструктора формы. Цель банальна, содать удобный юзерфрендли) конструктор html форм, с использованием jquery.
Проект не сложный, но он ощутимо разрастается с наращиванием функционала. Думаю, выбранный способ реализации далек от совершенства и хочется услышать советы по его рационализации и модификации, а возможно и вовсе раскроете мне глаза и я все перепишу заново

Итак, способ реализации.

Есть некоторое количество кнопок, которые соответствуют конкретному элементу формы (text, radio, checkbox, select и т.д.). У каждой кнопки есть атрибут params, который содержит json-данные с параметрами, вот, например:

<div class="toolbar-textfield btn" params="{"wid":"8","title":"Текстовое поле","required":"0","type":"textfield","icon":"toolbar-textfield","description":"","options":null,"expert":{"name":"","regexp":"","error_message":""}}"></div>


При клике на кнопку, она передается в функцию обработки и JSON данные парсятся по соответствующим свойствам объекта:

..
Config.addSettingsWindow = function (element) {
  Config.thisParams = $.parseJSON($(element).attr('params'));
  description = Config.thisParams.description ? '<dl id="field-description"><dt>Описание: </dt><dd><textarea>' + Config.thisParams.description + '</textarea></dd></dl>' : ''
..


после этого функция генерирует всплывающее окно настроек(JQueryUI) из парсеных свойств. Эти настройки позволяют управлять параметрами поля. После внесения изменений, все параметры считываются и сохраняются обратно в JSON. т.е. в атрибут params текущего поля.

Существует 3 блока генерируемого html-кода:

1) Окно параметров элемента формы
2) Краткая версия элемента формы (грубо говоря - это прямоугольный блок, содержащий данные и типе элемента и его название. Например, группа из 10 чекбоксов или радио, будет представлена одним блоком краткой версии. Это дает возможность быстро понять структуру формы при ее большом объеме)
3)Полная версия элемента формы

То есть в итоге в js-коде получается много html-шаблонов для построения всех необходимых элементов конструктора

И отсюда вопрос, каким образом организовать код? Оставить все как есть, т.е. в едином js-файле или мэй би отделить js-код от html, а может быть еще как-то. Как обычно подходят к разработке подобных задач? Буду очень рад если поделитесь вашим опытом или ссылками на хорошие статьи на эту тему.

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2012, 17:03
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

Harvey,

Лучше всего отделять представление от логики.

Например, можно использовать различные шаблонизаторы (jquery templates).

Разметка выносится в отдельные блоки:
<script id="movieTmpl" type="text/x-jquery-tmpl">
<div class="container">
// и т.д.
</div>
</script>

А в коде вы указываете имя шаблона и передаете парампетры:
$('#movieTmpl').tmpl(dataItems).appendTo('#movieListBag');
Ответить с цитированием
  #3 (permalink)  
Старый 20.11.2012, 23:48
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

Hoshinokoe, спасибо большое! Это то, что я искал, но так и не нарвался)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация игрового поля для игры "Точки" last-art Events/DOM/Window 7 22.04.2012 03:18
Реализация функции include BreatheInTheVoid Общие вопросы Javascript 4 23.09.2010 14:23
реализация хитрого банера с помощью js seleve Элементы интерфейса 6 17.08.2010 15:08
Реализация "Удалить"..."Восстановить" как вконтакте.ру Darooma2 AJAX и COMET 10 26.05.2010 13:41
Реализация слайдера Vitaly jQuery 15 27.08.2009 23:27