tab2.page.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { IonicModule } from '@ionic/angular';
  2. import { Component, OnInit } from '@angular/core';
  3. import { HttpClient } from '@angular/common/http';
  4. import { Router } from '@angular/router';
  5. import { addIcons } from 'ionicons';
  6. import { search } from 'ionicons/icons';
  7. import { CloudObject, CloudQuery } from 'src/lib/ncloud';
  8. import { CommonModule } from '@angular/common';
  9. import { FormsModule } from '@angular/forms';
  10. @Component({
  11. selector: 'app-tab2',
  12. templateUrl: 'tab2.page.html',
  13. styleUrls: ['tab2.page.scss'],
  14. standalone: true,
  15. imports: [CommonModule, IonicModule, FormsModule]
  16. })
  17. export class Tab2Page implements OnInit {
  18. selectedSegment: string = 'collection'; // 默认选择分类标签
  19. selectedGenre: string = ''; // 存储选中的体裁
  20. PLPoemsList: Array<CloudObject> = []; // 所有诗歌列表
  21. filteredPoemsList: Array<CloudObject> = []; // 筛选后的诗歌列表
  22. constructor(private http: HttpClient, private router: Router) {
  23. addIcons({ search });
  24. }
  25. ngOnInit() {
  26. this.loadPLPoemsList();
  27. }
  28. // 加载所有诗歌
  29. async loadPLPoemsList() {
  30. let query = new CloudQuery("PL_Poems");
  31. this.PLPoemsList = await query.find();
  32. this.filteredPoemsList = this.PLPoemsList; // 初始化时显示所有诗歌
  33. }
  34. // 选择体裁
  35. onGenreSelect(genre: string | number | undefined) {
  36. if (typeof genre === 'string') {
  37. this.selectedGenre = genre;
  38. this.filterPoemsByGenre(genre);
  39. } else if (typeof genre === 'number') {
  40. // 如果 genre 是数字,可以根据需要进行处理,这里假设需要转换为字符串
  41. this.selectedGenre = genre.toString();
  42. this.filterPoemsByGenre(this.selectedGenre);
  43. }
  44. }
  45. // 根据体裁过滤诗歌列表
  46. filterPoemsByGenre(genre: string) {
  47. if (genre) {
  48. this.filteredPoemsList = this.PLPoemsList.filter(book => book.get('genre') === genre);
  49. //query.equalTo('genre', 'genre'); // 添加查询条件来限制 type="对应的genre"
  50. } else {
  51. this.filteredPoemsList = this.PLPoemsList; // 如果没有选择体裁,显示所有诗歌
  52. }
  53. }
  54. goToPoemDetail(bookcard: any) {
  55. this.router.navigate(['/poem-detail'],{ queryParams: { id: bookcard.id } });
  56. }
  57. }