HTML5: PagedList на knockout.js или как разбить данные на страницы через AJAX
Постановка задачи
Требуется получение данных в формате JSON. Данные должны быть разбиты на страницы, размер страниц можно устанавливать, страницы можно переключать (а иначе зачем всё это). А также требуется возможность поиска (фильтрации).
Давайте для начала подготовим к работе вновь созданный проект. Для этого выполним операции, которые были уже не раз описаны в предыдущих статьях.
Подготовка
Первое: в Package Maganger Console:
- Обновим все Nuget-пакеты, которые встроены в шаблон MVC4.
- Установим новый пакет JsSite – библиотека Java-скриптов.
- Еще один пакет SampleData, содержит тестовые данные (чтобы было с чем работать, описание пакета и его создание уже было описано ранее)
Второе: в главном шаблоне приложения _Layout.cshtml добавим ссылки на скрипты, которые добавились в систему вместе с JsSite.
1: @{
2: ViewBag.Title = "Home Page";
3: }
4:
5: <h1data-bind="text: meta.title"></h1>
6: <divid="clock"data-bind="text: clock.time"></div>
7: <pdata-bind="text: meta.description"></p>
8:
9: <p>
10: page size: <spandata-bind="text: people().length"></span>
11: <br/>
12: total items: <spandata-bind="text: ds.queryParams.total"></span>
13: <br/>
14: current page index: <spandata-bind="text: ds.queryParams.index"></span>
15: <br/>
16: groupSize: <spandata-bind="text: ds.queryParams.groupSize"></span>
17: <br/>
18: </p>
19: <divdata-bind="blockUI: indicator">
20: <div>
21: <inputtype="text"name="name"
22: data-bind="value: ds.queryParams.query, valueUpdate:'keyup'"/>
23: </div>
24:
25: <divdata-bind="pager: pager"></div>
26:
27: <table>
28: <thead>
29: <tr>
30: <th>Имя</th>
31: <th>Возраст</th>
32: <th>Профессия</th>
33: <th>В партии</th>
34: <th>Пол</th>
35: </tr>
36: </thead>
37: <tbody>
38: <!-- ko foreach: people -->
39: <tr>
40: <td>
41: <spandata-bind="text: Name"></span>
42: </td>
43: <td>
44: <spandata-bind="text: Age"></span>
45: </td>
46: <td>
47: <spandata-bind="text: Description"></span>
48: </td>
49: <td>
50: <spandata-bind="date: MemberDate"></span>
51: </td>
52: <td>
53: <spandata-bind="text: Gender"></span>
54: </td>
55: </tr>
56: <!-- /ko -->
57: </tbody>
58: </table>
59:
60: </div>
61:
62:
63: @section scripts
64: {
65: <scriptsrc="~/Scripts/app/site.vm.homeIndex.js"></script>
66: }
67:
68:
69: @*<pre>
70: <spandata-bind="text: JSON.stringify(ko.toJS($data),null,2)"></span>
71: </pre>*@
В качестве заключения
В предыдущем листинге, в строке 25 вы уже заметили, binding типа Pager, именно так осуществляется привязка site.controls.Pager() на форме (в разметке). Данная реализация пейджера очень проста, потому что малова-то кнопок навигации, но это уже дело техники.
Вся магия привязки лежит в Knockout, а конкретно в файле site.bindingHandlers.js,который устанавливается с пакетом JsSite, я написал ko.bindingHandlers.pager, который и выводит страницы от site.controls.Pager.
Кстати, вместе с пакетом JsSite появляется файл content/site.pager.css со стилями для пейджера и картинка-анимация images/ms-loader.gif.
Подробнее: http://feedproxy.google.com/~r/blogmusor/~3/wWFNnkUMEIs/111


Поделиться статьей:
Акция: Закажи любой сайт до окончания акции и получи скидку + подбор семантического ядра + поисковую оптимизацию сайта Это позволит Вам получать еще больше трафика и соответственно клиентов из Интернета!
До конца акции осталось
0
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
0
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
|
Узнайте подробности акции у менеджеров компании по телефонам: 8-924-200-7194 г.Хабаровск 8-800-550-9899 Бесплатно по России (с 2:30 до 11:30 по Мск) |
Новые статьи и публикации
- 2023-01-26 » Установка и настройка Call tracking и Email tracking
- 2022-11-09 » 12 работающих формул продающих текстов
- 2022-11-09 » Дизайн сайта как SEO фактор ранжирования в 2022. Неочевидные нюансы в дизайне
- 2022-09-06 » Яндекс выложил в опенсорс фреймворк для ускорения разработки мобильных приложений
- 2022-08-18 » Как я могу перенаправить и переписать свои URL-адреса с помощью файла .htaccess?
- 2022-08-01 » Яндекс выложил в опенсорс исходный код и документацию фреймворка userver
- 2022-07-29 » Как выявить медленные SQL запросы?
- 2022-07-29 » Читали мое письмо или нет? Как проверить с помощью php — Записки программиста
- 2022-07-26 » Я потратил 30 дней на анализ лучших кнопок призыва к действию, которые смог найти в Интернете
- 2022-06-29 » ТОП-15 актуальных трендов интернет-маркетинга для России: эксперт рассказал о тенденциях рынка в 2022 году
- 2022-06-21 » Почему «99 франков» — это не лучшая ценовая стратегия, и как теперь «рисовать» привлекательные цены
- 2022-06-16 » Пушкинская карта и Культура.РФ на Вашем сайте. Подключим к действующему сайту и(или) сделаем новый!
- 2022-05-18 » Анализ рынка интернет-маркетинга в РФ от Яндекс Дзен
- 2022-05-18 » Итоги развития рекламного рынка РФ за 2021 год по версии АКАР
- 2022-05-18 » Потребление мобильного трафика в Рунете достигло рекордных значений
- 2022-05-17 » Yappy, TenChat и другие. Обзор новых русских соцсетей и их возможностей
- 2022-05-17 » Реклама малого бизнеса. Разбор доступных каналов, инструментов аналитики и терминов
- 2022-05-16 » Зачем нужен счетчик Top@Mail.ru и как установить на сайт пиксель myTarget
- 2022-04-25 » Несмотря на отсутствие блокировки: в Youtube потеряли более 20% активных русскоязычных авторов
- 2022-04-25 » Чат-бот – что это такое
- 2022-04-19 » Комплексная услуга по разработке сайта или Интернет-магазина БЕСПЛАТНО!!!
- 2022-03-17 » Импорт большого дампа БД в OpenServer через консоль
- 2022-02-25 » Возможности и преимущества Google Analytics 4
- 2022-02-20 » Интеграция Интернет-магазинов и сайтов с маркетплейсами в несколько кликов – РЭДЛАЙН! ыходи на Маркетплейсы — кратно увеличь свои продажи!
- 2022-01-26 » Анализ и отслеживание конверсий
- 2022-01-26 » Создаем сайты на Тильде с маркетинговой проработкой!
- 2022-01-26 » Разработка сайтов на Wordpress "под ключ"
- 2022-01-18 » Основные UX-тренды 2022 года
- 2021-12-24 » Как увеличить продажи перед Новым годом
- 2021-12-23 » Ключевые запросы − основа эффективного продвижения
Предоставляем полный комплекс услуг по созданию, обслуживанию и продвижению сайтов по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.