Задать вопрос
AntonEssential
@AntonEssential

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

Доброго времени.
Пару дней назад сел за новый проект, просмотрев все псд фаилы и прочитав тех задание, пришли к выводу что необходимо для проекта прикрутить аякс, в 2ух словах картина такова:
Имеется карточки товара при клике на которые должно открываться детальное описание в поп-ап окне, помимо детального описания имеются поп-апы с формой регистрации и лог окном и пассворд ресетом.
Так вот меня собственно волнует правильная верстка этих поп-ап окон.
Скажите пожалуйста, будет ли правильным верстка в моем случае.
Я верстаю индексный фаил и php инклюдом подключаю страницу pop-up.php в которой находится форма рега, лог окно и детальное описание карточки, в css создаю правило display: none для всех поп-ап окон и создаю скрипт которые отслеживает события по клику на определенные идентификаторы и открывает тот поп-ап идентификатор которого был выбран, ну а дальше аякс прогружает контент в поп-апе.
Это первый проект такого типа, я в замешательстве.
  • Вопрос задан
  • 2356 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 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>

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

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

Похожие вопросы