ionic基础组件使用:ion-grid组件

https://ionicframework.com/docs/api/grid

示例:平分,加起来等于12分

组件的app.component.html文件:
在这里插入图片描述

在这里插入图片描述

示例:平分:加起来不等于12份

在这里插入图片描述

在这里插入图片描述

不平分:加起来等于12份

在这里插入图片描述

在这里插入图片描述

示例:如果不带size属性,则自动均分

在这里插入图片描述

在这里插入图片描述

示例:如果size的和加起来大于12份,则自动折行

在这里插入图片描述

在这里插入图片描述

综合案例:多列布局、上拉触底加载更多、下拉刷新

在app.module.ts文件中加载网络服务:
在这里插入图片描述

组件的app.component.ts文件:

import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { InfiniteScrollCustomEvent } from '@ionic/angular';
import { IonRefresherCustomEvent, RefresherEventDetail, IonInfiniteScrollCustomEvent } from '@ionic/core';

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.scss'],
})
export class AppComponent implements OnInit {
  url = 'http://localhost:8888/ka?_page='
  res: Result = {
    data: [],
    first: 0,
    items: 0,
    last: 0,
    next: 0,
    pages: 0,
    prev: 0
  }

  constructor(private http: HttpClient) { }

  ngOnInit(): void {
    this.http.get<Result>(this.url + 1).subscribe(res => {
      console.log(res)
      this.res = res
    })
  }

  loadData(e: IonInfiniteScrollCustomEvent<void>) {
    let nextPage
    if (this.res.next) {
      nextPage = this.res.next
    } else {
      nextPage = this.res.next
    }
    this.http.get<Result>(this.url + nextPage).subscribe(res => {
      res.data = this.res.data.concat(res.data)
      this.res = res

      e.target.complete()
    })
  }

  doRefresh(e: IonRefresherCustomEvent<RefresherEventDetail>) {
    this.http.get<Result>(this.url + 1).subscribe(res => {
      this.res = res

      e.target.complete()
    })
  }
}

interface Result {
  data: ResultData[]
  first: number
  items: number
  last: number
  next: number
  pages: number
  prev: number
}

interface ResultData {
  date: string
  id: string
  money: number
  type: string
  useFor: string
  pic: string
}

组件的app.component.html文件:

<ion-app>
  <ion-header>
    <ion-toolbar>
      <ion-title>grid 组件</ion-title>
    </ion-toolbar>
  </ion-header>

  <ion-content *ngIf="res">
    <!-- 下拉刷新 -->
    <ion-refresher slot="fixed" (ionRefresh)="doRefresh($event)">
      <ion-refresher-content></ion-refresher-content>
    </ion-refresher>

    <ion-grid fixed>
      <ion-row>
        <ion-col size="6" *ngFor="let item of res.data">
          <ion-card>
            <img src="{{ item.pic }}" alt="">
            <ion-card-header>
              <ion-card-title>{{ item.type }}</ion-card-title>
              <ion-card-subtitle>{{ item.date }}</ion-card-subtitle>
            </ion-card-header>
            <ion-card-content>
              <div>{{ item.money }}</div>
            </ion-card-content>
          </ion-card>
        </ion-col>
      </ion-row>
    </ion-grid>

    <!-- 上拉触底加载更多数据 -->
    <ion-infinite-scroll threshold="25%" [disabled]="res.next === null" position="bottom"
      (ionInfinite)="loadData($event)">
      <ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载中...">
      </ion-infinite-scroll-content>
    </ion-infinite-scroll>

    <ion-button disabled *ngIf="res.next === null" expand="full">没有更多数据了</ion-button>
  </ion-content>
</ion-app>

组件的app.component.scss文件:

ion-card-header {
  overflow: hidden;
  text-overflow: ellipsis;
  /* 弹性伸缩盒子模型显示 */
  display: -webkit-box;
  /* 限制在一个块元素显示的文本的行数 */
  -webkit-line-clamp: 2;
  /* 兼容性 */
  line-clamp: 2;
  /* 设置或者检索伸缩盒子对象的子元素的排列方式 */
  -webkit-box-orient: vertical;
}

ion-card {
  padding: 0;
  margin: 0;
}

ion-col {
  padding: 2px;
}

ion-grid {
  padding: 0;
}

ion-card-header {
  padding: 3px;
}

展示效果:
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ionic侧边栏是一个非常实用的组件,可以让用户轻松地在不同的页面之间进行导航。ion-side-menus是Ionic中用于创建侧边栏的指令,它提供了多个选项来控制侧边栏的外观和功能。 要使用ion-side-menus指令,需要在HTML中创建一个包含ion-side-menus指令的容器元素。然后,在容器中定义一个ion-side-menu-content指令,用于指定主要内容区域。在主要内容区域中,可以使用ion-nav-view指令来显示不同的页面。 在侧边栏中,可以使用ion-side-menu指令来定义侧边栏的内容。可以在侧边栏中包含任意数量的元素,包括列表、按钮和链接等。 当用户在侧边栏中选择一个项目时,可以使用ion-tap指令来处理点击事件。ion-tap指令可以与ng-click指令一起使用,用于在视图中触发特定的函数或操作。 下面是一个示例代码,展示了如何使用ion-side-menus和ion-tap指令来创建一个具有侧边栏导航的Ionic应用: ``` <ion-side-menus> <!-- 左侧侧边栏 --> <ion-side-menu side="left"> <ion-header-bar class="bar-dark"> <h1 class="title">菜单</h1> </ion-header-bar> <ion-content> <ion-list> <ion-item ng-click="openPage('home')">首页</ion-item> <ion-item ng-click="openPage('about')">关于</ion-item> <ion-item ng-click="openPage('contact')">联系我们</ion-item> </ion-list> </ion-content> </ion-side-menu> <!-- 主要内容区域 --> <ion-side-menu-content> <ion-header-bar class="bar-dark"> <button class="button button-icon ion-navicon" ng-click="toggleLeft()"> </button> <h1 class="title">我的应用</h1> </ion-header-bar> <ion-nav-view></ion-nav-view> </ion-side-menu-content> </ion-side-menus> ``` 在上面的代码中,我们创建了一个包含ion-side-menus指令的容器元素。在容器中,我们定义了一个包含ion-side-menu指令的左侧侧边栏,并在其中添加了一些项目。在主要内容区域中,我们使用ion-nav-view指令来显示不同的页面,并使用ion-header-bar指令来添加导航栏。在导航栏中,我们添加了一个按钮,用于打开左侧侧边栏,并使用ion-tap指令来处理点击事件。 最后,我们还需要在控制器中定义一个openPage函数,用于在点击侧边栏中的项目时导航到不同的页面。 ``` .controller('MyCtrl', function($scope, $ionicSideMenuDelegate, $state) { $scope.openPage = function(page) { $ionicSideMenuDelegate.toggleLeft(false); $state.go(page); }; $scope.toggleLeft = function() { $ionicSideMenuDelegate.toggleLeft(); }; }); ``` 在上面的代码中,我们定义了一个openPage函数,用于在点击侧边栏中的项目时导航到不同的页面。我们还定义了一个toggleLeft函数,用于打开或关闭左侧侧边栏。在openPage函数中,我们通过$state.go函数来导航到不同的页面,并在导航完成后关闭左侧侧边栏。在toggleLeft函数中,我们使用$ionicSideMenuDelegate.toggleLeft函数来打开或关闭左侧侧边栏。 总之,使用ion-side-menus和ion-tap指令可以轻松创建具有侧边栏导航的Ionic应用,并实现侧边栏中项目的点击事件处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值