6、Modal

1、首先Modal是一个内容窗格、通常用来做一个选择或编辑。
/* --- tabs.html ----*/ <ion-navbar *navbar hideBackButton>
<ion-title>Modals</ion-title>
</ion-navbar> <ion-content> <ion-list>
<ion-list-header>
Hobbits
</ion-list-header>
<a ion-item (click)="openModal({charNum: 0})">
Gollum
</a>
<a ion-item (click)="openModal({charNum: 1})">
Frodo Baggins
</a>
<a ion-item (click)="openModal({charNum: 2})">
Sam
</a>
</ion-list> </ion-content> /* --- tabs.html ----*/
上述常见了 3个 item 并对每个 item监听了一个 click方法 传了一个参数。 来看 tabs.js
/* --- tabs.js ----*/
import { Modal, NavController, Page} from 'ionic-angular';
import { ModalsContentPage } from './modal.js'
@Page({
templateUrl: 'build/pages/tabs/tabs.html',
})
export class TabsPage {
static get parameters() {
return [[NavController]];
}
constructor(nav) {
this.nav = nav;
}
openModal(characterNum) {
let modal = Modal.create(ModalsContentPage, characterNum);
this.nav.present(modal);
}
}
/* --- tabs.js ----*/
首先 我导入了。import { Modal, NavController, Page } from 'ionic-angular'; page不用说啦。
this.nav.push( ItemDetailsPage , { item: item});那这里用的是 this.nav.present(modal); 看完以前的章节 可以得知当创建loading alert的时候 他都用的是 present 而不是 push那代表着。其实他本身并不是导航到另一个路由
/* --- modal.js ----*/
import { NavParams, Page,ViewController} from 'ionic-angular';
@Page({
templateUrl: 'build/pages/tabs/modal.html',
})
export class ModalsContentPage {
static get parameters() {
return [[NavParams],[ViewController]];
}
constructor(params,viewCtrl) {
this.params = params;
this.viewCtrl = viewCtrl;
var characters = [
{
name: 'Gollum',
quote: 'Sneaky little hobbitses!',
image: 'img/1.jpg',
items: [
{ title: 'Race', note: 'Hobbit' },
{ title: 'Culture', note: 'River Folk' },
{ title: 'Alter Ego', note: 'Smeagol' }
]
},
{
name: 'Frodo',
quote: 'Go back, Sam! I\'m going to Mordor alone!',
image: 'img/1.jpg',
items: [
{ title: 'Race', note: 'Hobbit' },
{ title: 'Culture', note: 'Shire Folk' },
{ title: 'Weapon', note: 'Sting' }
]
},
{
name: 'Samwise Gamgee',
quote: 'What we need is a few good taters.',
image: 'img/1.jpg',
items: [
{ title: 'Race', note: 'Hobbit' },
{ title: 'Culture', note: 'Shire Folk' },
{ title: 'Nickname', note: 'Sam' }
]
}
];
this.character = characters[this.params.get('charNum')];
}
dismiss() {
this.viewCtrl.dismiss();
}
}
/* --- modal.js ----*/
同样的 虽说我们路由的导航 从 this.nav.push( )变成了 this.nav.present() 但是我们从接收参数的方法并没有改变。我们同样是用this.params.get('charNum')获取参数
var characters 其实就是获取一个局部变量里面的数组就是数据。 2、this.params.get('charNum') 获取一个参数 在 tabs.html 里我们得知他的参数返回一个number类型。 所以获取到了 var characters 数组中的一条数据this.character 其实就相当于 ng1中的 $scope.character 他本身跟局部变量 var characters 并没有关系,所以这里把得到的数据 给作用域 this.character2、来看 dismiss 方法 this.viewCtrl.dismiss(); viewCtrl : ViewController 中的 ViewController 他又是啥呢? 因为 modal 他的创建 是覆盖页面变成一个层 ,所以把这个层去除掉的时候
this.viewCtrl.dismiss();这个方法了。之后在来看 modal.html页面。/* --- modal.html ----*/ <ion-toolbar>
<ion-title>
Description
</ion-title>
</ion-toolbar> <ion-content padding>
<ion-list>
<ion-item>
<ion-avatar item-left>
<img src="{{character.image}}">
</ion-avatar>
<h2>{{character.name}}</h2>
<p>{{character.quote}}</p>
</ion-item> <ion-item *ngFor="let item of character['items']">
{{item.title}}
<ion-note item-right>
{{item.note}}
</ion-note>
</ion-item>
</ion-list>
<button block (click)="dismiss()">关闭 modal</button>
</ion-content> /* --- modal.html ----*/
最终效果:


6、Modal的更多相关文章
- bootstrap弹窗、弹出层、modal
bootstrap弹窗.弹出层.modal 引入bootstrap的js文件 如下div代码 <div class="modal fade" id="myMo ...
- 使用Bootstrap 3开发响应式网站实践05,使用Tab、Modal、Form展示内容,使用Popover、Tooltip展示提示信息
本篇体验用Tab插件显示内容.Html部分为: <div class="row" id="moreInfo"> <div class=&quo ...
- Bootstrap 3之美07-插件Collapse、Accordion、Modal、Tab、Tooltip、Alert、Carousel
类似Page Header, Breadcrumbs, Dropdowns等,都是Bootstrap的组件,是静态的.如果涉及到交互,Bootstrap提供了插件.这些插件包括: ○ 过渡效果: bo ...
- iOS开发中视图相关的小笔记:push、modal、popover、replace、custom
在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的. 在iphone中,segue有:push,modal,和custom三种不同的类型, ...
- bootstrap-面板、modal
面板: <!-- panel 面板 panel-heading 面板头部 panel-title 面板标题样式 panel-body 面板内容 --> <div class=&quo ...
- bootstrap简单使用布局、栅格系统、modal标签页等常用组件入门
<!DOCTYPE html> <html> <head> <title>bootstrap</title> <!-- 引入boots ...
- layer层、modal模拟窗 单独测试页面
layer_test.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- iOS开发——项目篇—高仿百思不得姐 05——发布界面、发表文字界面、重识 bounds、frame、scrollView
加号界面(发布模块) 一.点击加号modal出发布模块,创建控件,布局控件1)使用xib加载view,如果在viewDidLoad创建控件并设置frame 那么self.view 的宽高 拿到的是xi ...
- iOS开发——UI进阶篇(十四)modal
一.modal与pushmodal从下面往上盖住原来的控制器,一般上一个控制器和下一个控制器没有什么关联时用modal,比如联系人的加号跳转页面,任何控制器都可以用modal push一般是上下文有关 ...
随机推荐
- 【03】循序渐进学 docker:基础命令
写在前面的话 之前谈了啥是 docker 和怎么安装 docker,这里就谈谈 docker 命令的使用,当然,这里的使用可能只是局限于 docker 的增删查改. 另外需要注意的是,为了图片的美观, ...
- RDD与DataFrame
RDD:分布式对象集合: 解决了:减少中间计算结果处理所需的开销 数据存在内存,提供一个通用的抽象的数据结构 惰性求值 DataFrame:分布式Row对象集合 服务于:SparkSQL
- Tensorflow报错:InvalidArgumentError: You must feed a value for placeholder tensor 'input_y' with dtype
此错误神奇之处是每次第一次运行不会报错,第二次.第三次第四次....就都报错了.关掉重启,又不报错了,运行完再运行一次立马报错!搞笑! 折磨了我半天,终于被我给解决了! 问题解决来源于这边博客:htt ...
- day08.3-apache网页服务
1. 安装软件:yum install httpd -y 2. 查看配置文件:vim /etc/httpd/conf/httpd.cof,其中,"Listen 80&qu ...
- 写excel
一.写excel import xlwt book = xlwt.Workbook()# 创建excel sheet = book.add_sheet('stu_info')# 加一个sheet sh ...
- 关于C语言中printf函数“输出歧视”的问题
目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...
- SDUT OJ 数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- ASP.Net一般处理程序Session用法
1.在aspx和aspx.cs中,都是以 Session["type"]="aaa" 和 string aaa=Session["type" ...
- WPF Hidden和Collapsed
对于这两种设定,其实已经提示的很清楚了 Visibility="Hidden"不显示元素,但是在布局为元素保留空间 Visibility="Collapsed" ...
- C++标准库之String
C++中支持的字符串处理的函数库叫String,但它不是STL,却与STL操作十分相似. 1.声明: 使用String之前要有以下头文件 #include<string> using na ...