http://blog.csdn.net/h254532699/article/details/54382123

使用Ionic这种框架伟大的地方在于用户界面元素默认准备好了,意味着你可以设计更好的app而不需要很强的用户体检设计背景,而且让你可以更容易实现这些模式。

这篇教程将展示如何使用Ionic2添加一个简单的删除按钮到列表,当用户滑动列表项到左边的时候。这是一个处理删除列表数据时候常用的模式。本教程将涵盖创建这个滑动删除按钮所需要的一切。

删除例子

1.创建Ionic2应用

通过以下命令行语句创建新的Ionic2应用:

ionic start ionic2-delete blank --v2

这里我使用了–v2标志位,为了告诉Ionic命令行我们创建的是Ionic2项目。

2.准备列表数据

我们需要一些维护数据,因此要建立一些试验数据。创建我们项目的blank模版默认建立了一个Home组件,这个教程我们就在此基础上修改。
既然Ionic2还很新,我将这些步骤尽量阐述详细,下面我们看看app/home/home.js文件:

import {Page} from 'ionic/ionic'
伦理片 http://www.dotdy.com/  @Page({
templateUrl: 'app/home/home.html',
})
export class HomePage {
constructor() {}
}

constructor 方法在组件创建是执行,因此我们在这里准备试验数据。你可能已经注意到我们已经给这个组件定义了模版,随后将展示如何在模版中使用在这里添加的数据。

home.js 文件修改如下:

import {Page} from 'ionic/ionic'

@Page({
templateUrl: 'app/home/home.html',
})
export class HomePage {
constructor() { this.items = [
{title: 'item1'},
{title: 'item2'},
{title: 'item3'},
{title: 'item4'},
{title: 'item5'},
{title: 'item6'}
]; }
}

现在我们有一些数据可以删除了。

3.修改主页(HOME)的模版

接下来我们编辑home.html来建立模版。现在的模版是包含一些创建<ion-card>的代码,而我们要用<ion-list>来代替:

修改 home.html如下:

<ion-navbar *navbar>
<ion-title>
Home
</ion-title>
</ion-navbar> <ion-content>
<ion-list> <ion-item>
I'm just a plain old item in a list...
</ion-item> </ion-list>
</ion-content>

这只是创建了只有一个单项的列表,接着我们将添加滑动元素。

继续修改home.html如下:

<ion-navbar *navbar>
<ion-title>
Home
</ion-title>
</ion-navbar> <ion-content>
<ion-list> <ion-item-sliding> <ion-item>
Swipe me to the left
</ion-item> <ion-item-options>
<button danger (click)="removeItem()"><icon trash></icon> Delete</button>
</ion-item-options>
</ion-item-sliding> </ion-list>
</ion-content>

通过上下对比,你应该看到:我们用ion-item-sliding替换了ion-item 。这允许我们创建一个ion-item-options 部件,当用户滑动列表元素时,它将显示出来。
这段代码还创建了一个删除按钮,当ion-item-options部件显示出来时,可以点击按钮,这时会触发类中定义的removeItem (暂无,接下来添加)。另外,我们不止是一个单项,我们要为我们创建的数组的每一个数据创建滑动项,这里我使用ng-for。

还是修改home.html如下:

<ion-navbar *navbar>
<ion-title>
Home
</ion-title>
</ion-navbar> <ion-content>
<ion-list> <ion-item-sliding *ng-for="#item of items"> <ion-item>
{{item.title}}
</ion-item> <ion-item-options>
<button danger (click)="removeItem(item)"><icon trash></icon> Delete</button>
</ion-item-options>
</ion-item-sliding> </ion-list>
</ion-content>

现在我们循环在类中定义的items数组的每个item项,然后为每个项创建一个 ion-item-sliding指令。注意我们使用的是#item而不是item。这将创建一个本地引用到迭代获得的item,这让我们可以使用 { {item.title} } 输出标题,它还允许我们传递item的引用到我们的 removeItem 函数。
我们现在有了一个列表包含所有数据,用户可以滑动并显示出一个delete按钮。现在剩下的是当用户点击时做点什么事。因此我们设置一个简单监听以便调用方法从我们先前创建的测试数据中删除一项。

4.创建方法删除数据

现在我们去到 home.js 文件编写方法处理数据删除。当前但删除按钮被点击时传送一个数据项给 removeItem。类似的,你可以非常容易的实现例如删除、编辑、分享、播放动画等你需要的东西,不仅是删除。

修改 home.js 如下:

import {Page} from 'ionic/ionic'

@Page({
templateUrl: 'app/home/home.html',
})
export class HomePage { constructor() { this.items = [
{title: 'item1'},
{title: 'item2'},
{title: 'item3'},
{title: 'item4'},
{title: 'item5'},
{title: 'item6'}
]; } removeItem(item){ for(i = 0; i < this.items.length; i++) { if(this.items[i] == item){
this.items.splice(i, 1);
} } } }

现在你向左侧滑动列表项,然后点击删除按钮,它就会从列表中删除。就像下面这样:

删除例子

5.添加一个编辑按钮

这里将不会将Edit按钮的全过程走一遍,但是你可以轻易扩展活动项并添加编辑按钮,如下所示:

<ion-item-options>
<button primary>Edit</button>
<button danger (click)="removeItem(item)"><icon trash></icon> Delete</button>
</ion-item-options>

现在滑动时你有两个按钮了,看下面:

添加编辑按钮

然后你可以编写Edit按钮的点击事件了,具体取决于你的需求。

总结

Ionic2 这个特性真是太棒了,不仅能删除,还能轻易的添加其它按钮。
这同时也是一个非常完美的UI元素节省屏幕空间,不会显示这些信息除非你滑动屏幕。

ionic2 tabs使用 Modal底部tab弹出框

项目要实现一个功能,在首页底部中间的tab弹出一个页面,而且是没有底部栏的,而不是像平常滑动的一个子页面。

像这样:

做法其实很简单

1.修改tabs.html中的tab,去掉[root]="tab2root"属性,就不会显示子页面了

2.添加(ionSelect)方法,点击这个tab按钮的事件,用来显示你的弹出modal

去掉之前:

  1. <ion-tab [root]="tab5Root"  tabIcon="call" (ionSelect)="call()" ></ion-tab>

去掉之后:

  1. <ion-tab   tabIcon="call" (ionSelect)="call()" ></ion-tab>

3.在tabs.ts中显示实现(ionSelect)方法的call()方法,以显示modal

  • 引入ModalController
  1. import { NavController, NavParams,ModalController,ViewController,Tabs } from 'ionic-angular';
  • 声明ModalController
  1. constructor(public navCtrl: NavController, public navParams: NavParams,<span style="color:#ff0000;">public modalCtrl: ModalController,</span>public viewCtrl: ViewController) {
  2. }
  • 实现call方法
  1. call(){
  2. let modal = this.modalCtrl.create(CallModalPage);
  3. modal.present();
  4. }

大功告成!

Ionic 2 :如何实现列表滑动删除按钮的更多相关文章

  1. Android 编程下代码之(QQ消息列表滑动删除)

       这份代码写出来有些时候了,一直没共享,现在把它共享给大家.简单列一下代码中你可以学到的知识点: 自定义控件的实现方式: 事件的拦截分发消费机制: QQ会话列表滑动删除原理: 最后附上源码链接:Q ...

  2. [Phonegap+Sencha Touch] 移动开发72 List列表横向滑动操作(仿QQ列表滑动删除)

    原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50425744 本插件有2个版本号:sencha touch 版本号和 extjs6 m ...

  3. Android仿微信SlideView聊天列表滑动删除效果

    package com.ryg.slideview; import com.ryg.slideview.MainActivity.MessageItem; //Download by http://w ...

  4. framework7滑动删除列表触发chrome 报错解决办法

    使用 <div class="list-block"> <ul> <li class="swipeout"> <div ...

  5. 【转】Android 实现ListView的滑动删除效果

    http://www.cnblogs.com/weixiao870428/p/3524055.html http://download.csdn.net/download/love_javc_you/ ...

  6. QML学习笔记(八)— QML实现列表侧滑覆盖按钮

    QML实现列表右边滑动删除按钮,并覆盖原有的操作按钮,点击可实现删除当前项 本文链接:QML实现列表侧滑覆盖按钮 作者:狐狸家的鱼 GitHub:八至 列表实现在另一篇博客已经提及,列表可选中.拖拽. ...

  7. 微信小程序列表项滑动显示删除按钮

    微信小程序并没有提供列表控件,所以也没有iOS上惯用的列表项左滑删除的功能,SO只能自己干了. 原理很简单,用2个层,上面的层显示正常的内容,下面的层显示一个删除按钮,就是记录手指滑动的距离,动态的来 ...

  8. js移动端向左滑动出现删除按钮

    最近在做移动端项目时,需要实现一个列表页面的每一项item向左滑动时出现相应的删除按钮,本来想着直接使用zepto的touch.js插件,因为之前实现相同的功能时用过这个插件,当时还挺好用的,直接使用 ...

  9. ios8 tableView设置滑动删除时 显示多个按钮

      ** *  tableView:editActionsForRowAtIndexPath:     //设置滑动删除时显示多个按钮 *  UITableViewRowAction          ...

随机推荐

  1. linux系统chkconfig使用方法及服务开机启动

    一.基础知识 有关linux系统开机过程.运行等级,执行权限请看另一篇:linux系统启动过程及运行等级详解. 本篇文章实践的系统:centos6.5 二.创建服务 通过之前的说明,我们知道了如果需要 ...

  2. shiro 集成spring 使用 redis作为缓存 学习记录(六)

    1.在applicationContext-redis.xml配置文件中增加如下: 申明一个cacheManager对象 用来注入到  shiro的   securityManager 属性  cac ...

  3. SQL Server 2008 收缩日志

    如果SQL SERVER 日志过大,比如,达到了几十个G,想一次性收缩的,直接执行下面命令即可: USE DATABASENAME; GO – Truncate the log by changing ...

  4. 第二话:javascript中闭包的理解

    闭包是什么? 通过闭包,子函数得以访问父函数的上下文环境,即使父函数已经结束执行. OK,我来简单叙述下,先上图. 都知道函数是javascript整个世界,对象是函数,方法是函数,并且js中实质性的 ...

  5. 初学者教程之命名空间,范围解析及LEDB规则

    2014年5月12日 Sebastian Raschka编写 这是一篇关于采用LEGB规则实现Python变量命名空间及范围解析的简短教程.下面章节将会提供简短的可以说明问题的示例代码块来简要阐述问题 ...

  6. Openssl genrsa命令

    一.简介 生成RSA私有密钥 二.语法 openssl genrsa [-out filename] [-passout arg] [-f4] [-] [-rand file(s)] [-engine ...

  7. itunes win10应用商店安装 升级固件路径

    win + r 在运行中输入: %localappdata%\Packages\AppleInc.iTunes_nzyj5cx40ttqa\LocalCache\Roaming\Apple Compu ...

  8. JS和DOM的关系

    DOM对象 DOM实际上是以面向对象方式描述的文档模型.DOM定义了表示和修改文档所需的对象.这些对象的行为和属性以及这些对象之间的关系. 根据W3C DOM规范,DOM是HTML与XML的应用编程接 ...

  9. Perl 学习笔记-高级控制结构

    1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<con ...

  10. Qt之生成pdf(转)

    Qt中如何让图片.文本.HTML或者其他形式的内容生成pdf呢?主要利用QPrinter来实现,QPrinter不止可以操作打印机来打印纸张文件,并且可以将文件保存至磁盘,存储为pdf格式的文件.   ...