IONIC中slides的使用(图片显示及其删除)

    先看效果(本来想上传一段视频,但好像CSDN不支持视频格式文件的上传,可以上传gif动态图)

html


<ion-content>
  <ion-slides pager>
    <ion-slide *ngFor="let img of images;let i=index">
      <ion-toolbar class="tolbar-layout">                  
        <ion-buttons center>        
          <button ion-button color="primary">{{img.Name}}</button>
        </ion-buttons>
      </ion-toolbar> 
      <img src="{{img.src}}" (press)="ImgPress()" />
    </ion-slide>
  </ion-slides>
</ion-content>

css 

  .tolbar-layout{
        min-height: 45px;
        position: absolute;
        opacity: 0.6;
    }
    
    .slide-zoom{
        height: 100%;

        img {
            min-height: 100%;
        }
    }

 ts

import { Component, ViewChild } from '@angular/core';
import { NavController, Slides, AlertController } from 'ionic-angular';

@Component({
  selector: 'page-contact',
  templateUrl: 'contact.html'
})

export class ContactPage {

  @ViewChild(Slides) componentSlides: Slides;

  images: any = [];

  constructor(public navCtrl: NavController,
    public alertCtrl: AlertController) {

    this.images = [{ src: 'assets/imgs/landscape/space1.jpg', Name: 'space1' },
    { src: 'assets/imgs/landscape/space2.jpg', Name: 'space2' },
    { src: 'assets/imgs/landscape/space3.jpg', Name: 'space3' },
    { src: 'assets/imgs/landscape/space4.jpg', Name: 'space4' },
    { src: 'assets/imgs/landscape/space5.jpg', Name: 'space5' },
    { src: 'assets/imgs/landscape/space6.jpg', Name: 'space6' },
    { src: 'assets/imgs/landscape/space7.jpg', Name: 'space7' }];

  }

  //长按删除图片
  ImgPress() {
    let alert = this.alertCtrl.create({
      message: "确认删除吗?",
      buttons: [{
        text: '取消',
        role: 'cancel'
      }, {
        text: '确定',
        handler: () => {
          this.DeleteImg();
        }
      }]
    })
    alert.present();

  }

  //删除图片
  DeleteImg() {
    var id;
    var index = this.componentSlides.getActiveIndex();
    if (index < this.images.length) {
      id = this.images[index].id;
    } else {
      id = this.images[index - 1].id;
    }

    for (var i = 0; i < this.images.length; i++) {
      if (this.images[i].id == id) {
        this.images.splice(i, 1);
        //如果删除的是最后一张图片,删除完后直接跳转到上一张图片
        if (i + 1 === this.componentSlides.length()) {
          this.componentSlides.slideTo(i - 1);
        }
        break;
      }
    }

    //判断图片删除完后,是否还有图片,如果没有,则退出
    if (this.images.length == 0) {
      this.navCtrl.pop();
    }
  }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用ionic-native的Camera插件来实现上传相册图片和拍照上传。具体实现可以参考以下代码: // 导入相关模块 import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; import { File } from '@ionic-native/file/ngx'; import { Transfer, TransferObject } from '@ionic-native/transfer/ngx'; // 初始化相关变量 private fileTransfer: TransferObject; private imageSrc: string; // 构造函数初始化fileTransfer constructor(private camera: Camera, private file: File, private transfer: Transfer) { this.fileTransfer = this.transfer.create(); } // 上传图片方法 uploadImage() { // 设置相机选项 const options: CameraOptions = { quality: 100, destinationType: this.camera.DestinationType.FILE_URI, sourceType: this.camera.PictureSourceType.PHOTOLIBRARY, encodingType: this.camera.EncodingType.JPEG, mediaType: this.camera.MediaType.PICTURE } // 调用相机插件获取图片 this.camera.getPicture(options).then((imageData) => { // 获取文件名 const fileName = imageData.substring(imageData.lastIndexOf('/') + 1); // 获取文件路径 const path = imageData.substring(0, imageData.lastIndexOf('/') + 1); // 移动文件到临时目录 this.file.moveFile(path, fileName, this.file.cacheDirectory, fileName).then((result) => { // 获取临时文件路径 const filePath = result.nativeURL; // 设置上传参数 const options = { fileKey: 'file', fileName: fileName, chunkedMode: false, mimeType: 'image/jpeg', headers: {} }; // 开始上传 this.fileTransfer.upload(filePath, 'http://example.com/upload.php', options).then((data) => { // 上传成功,返回服务器返回的数据 console.log(data); }, (err) => { // 上传失败,打印错误信息 console.log(err); }); }, (err) => { // 移动文件失败,打印错误信息 console.log(err); }); }, (err) => { // 获取图片失败,打印错误信息 console.log(err); }); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值