AntonEssential
@AntonEssential

Как правильно организовать верстку контента под ajax?

Доброго времени.
Пару дней назад сел за новый проект, просмотрев все псд фаилы и прочитав тех задание, пришли к выводу что необходимо для проекта прикрутить аякс, в 2ух словах картина такова:
Имеется карточки товара при клике на которые должно открываться детальное описание в поп-ап окне, помимо детального описания имеются поп-апы с формой регистрации и лог окном и пассворд ресетом.
Так вот меня собственно волнует правильная верстка этих поп-ап окон.
Скажите пожалуйста, будет ли правильным верстка в моем случае.
Я верстаю индексный фаил и php инклюдом подключаю страницу pop-up.php в которой находится форма рега, лог окно и детальное описание карточки, в css создаю правило display: none для всех поп-ап окон и создаю скрипт которые отслеживает события по клику на определенные идентификаторы и открывает тот поп-ап идентификатор которого был выбран, ну а дальше аякс прогружает контент в поп-апе.
Это первый проект такого типа, я в замешательстве.
  • Вопрос задан
  • 2356 просмотров
Решения вопроса 1
@bromzh
Drugs-driven development
Если надо сделать и забыть - то пофиг, и так сойдёт.
Если это поддерживаться и развиваться будет, то освой Knockout/Angular/etc. Делаешь привязку к данным через AJAX, на клиенте сохраняешь данные в ViewModel (или ему подобное), клики связываешь с выводом попапов.
Вот пример на Knockout:
<script type="text/javascript">
    function PopupModel(data) {
        var self = this;
        ko.mapping.fromJS(data, {}, self);
    }
    function ViewModel(data) {
        var self = this;
        var activePopup = ko.observable(null);
        ko.mapping.fromJS(data, {}, self);
        var popUpChooser = function(popupId) {
            $.getJSON('/api/popup/' + popupId, function(data) {
                // Получаем инфу для одного попапа
                // JSON:
                // {
                //     'id': '1',
                //     'name': 'foo',
                //     'email': 'foo@example.com'
                // }
                self.activePopup(new PopupModel(data));
            })            
        }
    }
    $(function() {
        $.getJSON('/api/popup/ids/', function(data) { // получаем список Id инфы для попапов
            // JSON такого вида: { popupIds: ['1', '2', '3'] }
            ko.applyBindings(new ViewModel(data));
        });
    });
</script>
<div data-bind="foreach: popupsIds">
    <input type="radio" data-bind="attr: {value: $data}"/>
</div>
<div class="popup" data-bind="if: activePopUp"> // отображаем, только если есть активный попап
    <div data-bind="text: activePopup().name"></div>
    <div data-bind="text: activePopup().email"></div>
</div>

Можно вообще сразу загружать всю инфу про попапы, код немного поменяется, но смысл тот же.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы