1. 模态对话框 : $ionicModal

模态对话框常用来供用户进行选择或编辑,在模态对话框关闭之前,其他 的用户交互行为被阻止 .操作模态对象返回结果,模态对象的方法提前定制。

三个步骤

1.声明对话框模板 使用ion-modal-view指令声明对话框模板,对话框模板通常置入 script内以构造内联模板:

<script id="a.html" type="text/ng-template">

<ion-modal-view> <!--对话框内容--> </ion-modal-view>

</script>

<script id="my-modal.html" type="text/ng-template">

<ion-modal-view>

<ion-header-bar class="bar-positive">

<h1 class="title">ion-modal-view</h1>

<a class="button" ng-click="closeModal();">关闭</a>

<a class="button" ng-click="removeModal();">remove</a>

</ion-header-bar>

<ion-content>

<div class="padding">

<div class="list">

<label class="item item-input">

<span class="input-label">First Name</span>

<input ng-model="newUser.firstName" type="text">

</label>

<label class="item item-input">

<span class="input-label">Last Name</span>

<input ng-model="newUser.lastName" type="text">

</label>

<label class="item item-input">

<span class="input-label">Email</span>

<input ng-model="newUser.email" type="text">

</label>

<button class="button button-full button-positive" ng-click="createContact()">Create</button>

</div>

</div>

</ion-content>

</ion-modal-view>

</script>

2.创建对话框对象 服务$ionicModal有两个方法用来创建对话框对象:

fromTemplate(templateString,options) - 使用字符串模板 fromTemplateUrl(templateUrl,options) - 使用内联模板这两个方法返回的都是一个对话框对象。

<script>

angular.module("myApp", ["ionic"])

.controller("myCtrl", function($scope, $ionicModal) {

$ionicModal.fromTemplateUrl("my-modal.html", {

scope: $scope,

animation: "slide-in-up"

}).then(function(modal) {

$scope.modal = modal;

});

$scope.openModal = function() {

$scope.modal.show();

};

$scope.closeModal = function() {

$scope.modal.hide();

};

$scope.removeModal = function() {

$scope.modal.remove();

};

//Cleanup the modal when we are done with it!

$scope.$on("$destroy", function() {

console.log('modal.$destroy');

$scope.modal.remove();

});

// Execute action on hide modal

$scope.$on("modal.hidden", function() {

// Execute action

console.log('modal.hidden');

});

// Execute action on remove modal

$scope.$on("modal.removed", function() {

// Execute action

console.log('modal.removed');

});

$scope.newUser = {};

$scope.createContact = function () {

console.log('Create Contact', $scope.newUser);

$scope.modal.hide();

};

});

</script>

3.操作对话框对象 对象框对象有以下方法用于显示、隐藏或删除对话框:

show() - 显示对话框

hide() - 隐藏对话框

remove() - 移除对话框

isShown() - 对话框是否可视

2. 上拉菜单 : $ionicActionSheet

上拉菜单是一个自屏幕底部向上滑出的菜单,通常用来让用户做出选择。

ionic的上拉菜单由三种按钮组成,点击任何按钮都自动关闭上拉菜单: 取消按钮 - 取消按钮总是位于菜单的底部,用户点击该按钮将关闭。

一个上拉菜单 最多有一个取消按钮。

危险选项按钮 - 危险选项按钮文字被标红以明显提示。一个上拉菜单最多有一个 危险选项按钮。

自定义按钮 - 用户定义的任意数量的按钮。

在ionic中使用上拉菜单需要遵循以下步骤:

1.定义上拉菜单选项 使用一个JSON对象定义上拉菜单选项,包括以下字段:

titleText - 上拉菜单的标题文本

buttons - 自定义按钮数组。每个按钮需要一个描述对象,其text字段用于按钮显示

cancelText - 取消按钮的文本。如果不设置此字段,则上拉菜单中不出现取消按钮

destructiveText - 危险选项按钮的文本。如果不设置此字段,则上拉菜单中不出现危险选项按钮

buttonClicked - 自定义按钮的回调函数,当用户点击时触发

cancel - 取消按钮回调函数,当用户点击时触发

destructiveButtonClicked - 危险选项按钮的回调函数,当用户点击时触发

cancelOnStateChange - 当切换到新的视图时是否关闭此上拉菜单。默认为true

cssClass - 附加的CSS样式类名称

2.创建上拉菜单 $ionicActionSheet服务的show()方法用来创建上拉菜单,返回一个函数,调用该 返回函数可以关闭此菜单。

<a class="button" ng-click="show();">操作</a>

<script>

angular.module("myApp", ["ionic"])

.controller("myCtrl",function($scope, $ionicActionSheet, $timeout) {

// Triggered on a button click, or some other target

$scope.show = function() {

// Show the action sheet

var hideSheet= $ionicActionSheet.show({

cancelOnStateChange:true,

cssClass:'action_s',

titleText: "操作当前文章",

buttons: [

{ text: "<b>分享</b>文章" },

{ text: "移动到..." }

],

buttonClicked: function(index) {

console.log('操作了第'+index+'个文章');

return true;

},

cancelText: "取消",

cancel: function() {

// add cancel code..

console.log('执行了取消操作');

return true;

},

destructiveText: "删除",

destructiveButtonClicked:function(){

console.log('执行了删除操作');

return true;

}

});

// For example's sake, hide the sheet after two seconds

$timeout(function() {

hideSheet();

}, 2000);

};

});

</script>

3. 弹出框 : $ionicPopup

弹出框通常用于提醒、警告等,在用户响应之前其他交互行为不能继续。与模态 对话框覆盖整个屏幕空间不同,弹出框通常仅占据一部分屏幕空间。

在ionic中,使用$ionicPopup服务管理弹出框:

$ionicPopup.show(options) .then(function(){

//这个函数在弹出框关闭时被调用

});

show()方法返回的是一个promise对象,当弹出框关闭后,该对象被解析,这意味着 then()方法指定的参数函数此时将被调用。

show()方法的参数options是一个JSON对象,可以包括以下字段:

title - 弹出框标题文本

subTitle - 弹出框副标题文本

template - 弹出框内容的字符串模板

templateUrl - 弹出框内容的内联模板URL

scope - 要关联的作用域对象

buttons - 自定义按钮数组。按钮总是被置于弹出框底部

cssClass - 附加的CSS样式类

<ion-content padding="true">

<a class="button button-block button-calm" ng-click="showPopup();">定制弹出框/popup</a>

<a class="button button-block button-calm" ng-click="showConfirm();">确认框/confirm</a>

<a class="button button-block button-calm" ng-click="showAlert();">警告框alert</a>

<a class="button button-block button-calm" ng-click="showPrompt();">提示框/prompt</a>

</ion-content>

<ion-footer-bar class="bar-positive">

<h1 class="title">{{status}}</h1>

</ion-footer-bar>

<script>

angular.module("myApp", ["ionic"])

.controller("myCtrl",function($scope, $ionicPopup, $timeout) {

$scope.status = "";

// 显示定制弹出框

$scope.showPopup = function() {

$scope.data = {}

// 调用$ionicPopup弹出定制弹出框

$ionicPopup.show({

template: "<input type='password' ng-model='data.wifi'>",

title: "请输入Wi-Fi密码",

subTitle: "密码为8位",

scope: $scope,

buttons: [

{ text: "取消" },

{

text: "<b>保存</b>",

type: "button-positive",

onTap: function(e) {

return $scope.data.wifi;

}

}

]

})

.then(function(res) {

$scope.status = ["Wi-Fi密码到手了",":",res].join(" ");

});

};

// 确认弹出框

$scope.showConfirm = function() {

$ionicPopup.confirm({

title: "定制冰激凌",

template: "你确定要吃我的冰淇淋吗?",

okText:"OK"

})

.then(function(res) {

if(res) {

$scope.status = "凭什么吃我的冰淇淋!";

} else {

$scope.status = "谢谢你不吃之恩!";

}

});

};

//警告弹出框

$scope.showAlert = function() {

$ionicPopup.alert({

title: "不要吃果冻",

template: "它们可能是用旧的皮鞋帮做的!"

})

.then(function(res) {

$scope.status = "感谢上帝,你没吃鞋帮哦!11";

});

};

//输入提示框

$scope.showPrompt = function(){

$ionicPopup.prompt({

title: "不要吃果冻",

template: "它们可能是用旧的皮鞋帮做的!"

})

.then(function(res) {

$scope.status = "感谢上帝,你没吃鞋帮哦!"+res;

});

}

});

</script>

4.浮动框 : $ionicPopover

<a class="button" ng-click="openPopover($event);">帮助</a>

<script id="ez-popover.html" type="text/ng-template">

<ion-popover-view class="calm-bg light padding">

<p>这里应该有些帮助信息....</p>

</ion-popover-view>

</script>

angular.module("myApp", ["ionic"])

.controller("myCtrl", function($scope, $ionicPopover) {

$ionicPopover.fromTemplateUrl("ez-popover.html", {

scope: $scope

})

.then(function(popover){

$scope.popover = popover;

})

$scope.openPopover = function($event) {

$scope.popover.show($event);

};

$scope.closePopover = function() {

$scope.popover.hide();

};

//销毁事件回调处理:清理popover对象

$scope.$on("$destroy", function() {

$scope.popover.remove();

});

// 隐藏事件回调处理

$scope.$on("popover.hidden", function() {

// Execute action

});

//删除事件回调处理

$scope.$on("popover.removed", function() {

// Execute action

});

});

5. 载入指示器 : $ionicLoading

<a class="button icon ion-refresh" ng-click="load();">载入</a>

angular.module("myApp", ["ionic"])

.controller("myCtrl", function($scope, $ionicLoading,$timeout) {

$scope.items = [];

var idx = 0;

$scope.load = function() {

//显示载入指示器

$ionicLoading.show({

template: "正在载入数据,请稍后..."

});

//延时2000ms来模拟载入的耗时行为

$timeout(function(){

for(var i=0;i<10;i++,idx++) $scope.items.unshift("item " + idx);

//隐藏载入指示器

$ionicLoading.hide();

},2000);

};

});

6. 背景幕 : $ionicBackdrop

angular.module("myApp",["ionic"])

.controller("myCtrl",function($scope, $ionicBackdrop, $timeout,$interval) {

$scope.locks = 0;

//保持背景幕

$scope.retain = function() {

$ionicBackdrop.retain();

$scope.locks++;

};

//释放背景幕

$scope.release = function() {

$ionicBackdrop.release();

$scope.locks > 0 ? $scope.locks-- : 0;

};

$interval(function(){

if($scope.locks > 0){

$ionicBackdrop.release();

$scope.locks--;

}

},2000)

});

</script>

Ionic学习笔记5_动态组件指令的更多相关文章

  1. Web Service学习笔记:动态调用WebService

    原文:Web Service学习笔记:动态调用WebService 多数时候我们通过 "添加 Web 引用..." 创建客户端代理类的方式调用WebService,但在某些情况下我 ...

  2. python学习笔记5_异常

    python学习笔记5_异常 1.什么事异常 Python使用异常对象(exception object) 来表示异常情况.遇到错误会发生异常. 如果异常对象未被处理或被捕捉,程序就会用所谓的回溯(t ...

  3. angular学习笔记(6)- 指令

    angular1学习笔记(6)- 指令 restrict-匹配模式 1.A - 属性 <my-menu title=Products></my-menu> 2.M - 注释 & ...

  4. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)——动态SQL 如果使用JDBC或者其他框架,很多时候需要你根据需求手动拼装SQL语句,这是一件非常麻烦的事情.MyBatis提供了对SQL语句动态的组装能力,而且他只有 ...

  5. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)——动态SQL

  6. [C++学习笔记14]动态创建对象(定义静态方法实现在map查找具体类名对应的创建函数,并返回函数指针,map真是一个万能类)good

    [C++学习笔记14]动态创建对象   C#/Java中的反射机制 动态获取类型信息(方法与属性) 动态创建对象 动态调用对象的方法 动态操作对象的属性 前提:需要给每个类添加元数据 动态创建对象 实 ...

  7. 【React】react学习笔记02-面向组件编程

    react学习笔记02-面向组件编程 面向组件编程,直白来说,就是定义组件,使用组件. 以下内容则简单介绍下组建的声明与使用,直接复制demo观测结果即可. 步骤: 1.定义组件   a.轻量组件-函 ...

  8. SpringBoot学习笔记:动态数据源切换

    SpringBoot学习笔记:动态数据源切换 数据源 Java的javax.sql.DataSource接口提供了一种处理数据库连接的标准方法.通常,DataSource使用URL和一些凭据来建立数据 ...

  9. [原创]java WEB学习笔记16:JSP指令(page,include),JSP标签(forwar,include,param)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. NOIP2010关押罪犯

    题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示 ...

  2. python3开发进阶-Django框架的自带认证功能auth模块和User对象的基本操作

    阅读目录 auth模块 User对象 认证进阶 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其 ...

  3. Python的编码注释# -*- coding:utf-8 -*-

    # -*- coding:utf-8 -*-的主要作用是指定文件编码为utf-8, 因为一般默认的是ASCII码,如果要在文件里面写中文,运行时会出现乱码,加上这句之后会把文件编码强制转换为utf-8 ...

  4. Remote procedure call (RPC)

    Remote procedure call (RPC) (using the .NET client) Prerequisites This tutorial assumes RabbitMQ isi ...

  5. Docker实践1:Virtualbox安装Oracle Enterprise Linux R6 U5

    先下载OracleLinux-R6-U5-Server-x86_64-dvd.iso文件,然后打开virtualbox 因为weblogic docker镜像都比较大,因此最好容量最好大一点,采用30 ...

  6. 特征选取方法PCA与LDA

    一.主成分分析(PCA)介绍 什么是主成分分析?   主成分分析是一种用于连续属性降维的方法,把多指标转化为少数几个综合指标. 它构造了原始属性的一个正交变换,将一组可能相关的变量转化为一组不相关的变 ...

  7. C++之string学习

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <list> #include <string& ...

  8. Scala快学笔记(一)

    一,基本概念: 1,Scala是一种基于JVM的面向对象和函数式编程语言 2,基本类型:数值类型 ->:Byte,Short,Int,Long,Float,Double和布尔类型:Boolean ...

  9. 【监控】使用 Grafana、collectd 和 InfluxDB 打造现代监控系统

    参考资料:Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器:http://www.oschina.net/p/grafana 使用 Grafana.collectd 和 ...

  10. gensim加载word2vec训练结果(bin文件)并进行相似度实验

    # -*- coding: utf-8 -*- import gensim # 导入模型 model = gensim.models.KeyedVectors.load_word2vec_format ...