Я хочу создать приложение Ionic 2 с 6 страницами, я не уверен, использовать ли канал или фильтр для отдельных страниц категорий и код, который мне нужен для этого.
Каждая страница категории может загружать соответствующие продукты, определенные категорией «applecat». Ниже представлен API, отображение продуктов в формате электронной таблицы через Google Таблицы и очень быстрый макет домашней страницы:
https://sheetsu.com/apis/v1.0/04c2d2906a10 https://docs.google.com/spreadsheets/d/1RNLXsxTFymqRwq_S538qX1p1PAEDIEA6s5sV8etkfLU/edit?usp=sharing
ОБЗОР
6 страниц
- домой - товары не нужно загружать - только ссылки на страницы
- allproducts - загружает ВСЕ продукты
- ipad - загружает все элементы, перечисленные как ipad в категории applecat
- iphone - загружает все элементы, перечисленные как iphone в категории applecat
- клавиатура - загружает все элементы, перечисленные как iphone в категории applecat
- ноутбук - загружает все элементы, перечисленные как iphone в категории applecat
СЦЕНАРИЙ (потенциальный поток пользователей)
Пользователь открывает приложение, нажимает «Домой», затем ссылку категории «Ipad» (загружает все продукты Ipad), затем возвращается на «Домой», решает нажать «Все» (загружает ВСЕ продукты), назад и щелкает на другой странице ....
ПРОБЛЕМА
Будет ли загружено 2 массива в память / консоль? Должны ли страницы категорий использовать фильтр или канал? Как код должен искать канал / фильтр по отношению к моему существующему вызову API и массиву списка продуктов?
ПРОВАЙДЕРЫ
getRemoteData(): any{
return this.http.get('https://sheetsu.com/apis/v1.0/04c2d2906a10')
.map(res => res.json());
}
СПИСОК СТРАНИЦЫ
@Component({
selector: 'page-master',
templateUrl: 'master.html',
providers: [Sheetsu]
})
export class MasterPage {
// declare publicly accessible variable
public sheetsuData: any;
constructor(public navCtrl: NavController, public navParams: NavParams, public sheetsuService: Sheetsu) {}
ionViewDidLoad() {
this.sheetsuService.getRemoteData()
.subscribe(response => {
// assign variable (async)
this.sheetsuData = response;
});
}
Я видел пример фильтра со сбросом, но не уверен, применимо ли это в этой ситуации?
resetData(){
this.modifiedData = JSON.parse(JSON.stringify(this.originalData));
}
filterData(){
this.modifiedData = this.modifiedData.filter((youtuber) => {
return youtuber.subscribers > 1000000;
}
}
Возможно, при таком небольшом количестве страниц категорий лучшим вариантом для каждой страницы будет труба? Просто потенциальная проблема множественных вызовов API, если пользователи просматривают все 6 страниц.
Предпочтительный ответ на вознаграждение: код для канала / фильтра / службы, советы по лучшему решению и почему, еще лучше - базовый рабочий пример в Github (вызов API для поставщика и список кода ts указаны выше).
Репозиторий Github для этого можно просмотреть и разветвить на странице https://github.com/jones98/4cat.
Видео приложения в текущем состоянии (страницы с предварительными категориями работают) можно просмотреть по адресу https://drive.google.com/file/d/0B0QBawqyq1vPZ0o4WEpaa0o0azQ/view