Я решил, что мне нужно улучшить свои навыки программирования на javascript, а также навыки OO. В настоящее время я читаю некоторые книги, но иногда трудно понять теорию, не увидев сначала практических примеров. Итак, у меня есть теоретический вопрос о «лучших практиках» для следующего сценария ...
Я хотел бы создать OO-скрипт, который отображает список записей тегов поиска, полученных с сервера. Я также хочу иметь возможность редактировать каждую запись тега поиска на месте.
В настоящее время я делаю это процедурно с небольшой помощью из библиотеки jQuery:
Я принимаю список записей тегов поиска с сервера в формате JSON. Это выглядит так:
[
{ "searchTagName" : "tagOne", "searchTagID" : "1" },
{ "searchTagName" : "tagTwo", "searchTagID" : "2" },
{ "searchTagName" : "tagThree", "searchTagID" : "3" },
etc...
]
Я выгружаю JSON непосредственно в jTemplates, чтобы создать соответствующий HTML, например так:
$("#searchTagList")
.setTemplateElement("template_searchTagList")
.processTemplate(searchTagData);
Наконец, я хочу, чтобы была возможность изменить каждый тег поиска с помощью метода редактирования на месте, поэтому я присоединяю предварительно созданный метод редактирования на месте к каждому элементу HTML:
$(".searchTag").editInPlace();
Это очень хорошо работает процедурно. И, возможно, самым разумным было бы оставить достаточно хорошо одного. :) Но, ради аргумента, как лучше написать что-то подобное с точки зрения ОО.
Должен ли я иметь один объект "searchTagList", который имеет методы для каждого из шагов, описанных выше?
var searchTagList =
{
searchTagData: JSONdata,
renderList: function () { /*send to jTemplates */ }
bindEdit: function() { /* attach edit-in-place */ }
}
Или это неправильно? (Кажется, что все, что я делаю, это оборачиваю свои процедурные функции в объект.) Должен ли я каким-то образом анализировать данные JSON в экземплярах каждого тега поиска, а затем прикреплять отдельные методы к каждому тегу поиска? (Это похоже на большие накладные расходы, без выгоды.)
Заранее извиняюсь, если кажется, что я ковыряюсь в волосах. Но я очень хочу, чтобы все было в голове.
Спасибо
Travis