diff --git a/ionic/components/modal/test/basic/index.js b/ionic/components/modal/test/basic/index.js
index de7c92afa5..3fa85695db 100644
--- a/ionic/components/modal/test/basic/index.js
+++ b/ionic/components/modal/test/basic/index.js
@@ -43,7 +43,8 @@ class IonicApp {
openModal() {
Modal.open(ContactModal, {
enterAnimation: 'my-fade-in',
- leaveAnimation: 'my-fade-out'
+ leaveAnimation: 'my-fade-out',
+ handle: 'my-awesome-modal'
});
}
}
@@ -72,6 +73,9 @@ export class ContactModal extends Modal {
+
+
+
@@ -94,6 +98,11 @@ export class ModalFirstPage {
modal.close();
}
+ closeByHandeModal() {
+ let modal = Modal.getByHandle('my-awesome-modal');
+ modal.close();
+ }
+
openActionMenu() {
ActionMenu.open({
buttons: [
diff --git a/ionic/components/overlay/overlay.js b/ionic/components/overlay/overlay.js
index d8a2d2bc7a..ab29b0b6f0 100644
--- a/ionic/components/overlay/overlay.js
+++ b/ionic/components/overlay/overlay.js
@@ -63,6 +63,7 @@ export class Overlay {
IonicRoot.append(ComponentType).then(ref => {
let overlay = ref.instance;
overlay._type = overlayType;
+ overlay._handle = opts && opts.handle;
overlay._dispose = ref.dispose;
overlay._domElement = ref.elementRef.domElement;
overlay.extendOptions(opts);
@@ -78,7 +79,16 @@ export class Overlay {
static getByType(overlayType) {
for (let i = overlayStack.length - 1; i >= 0; i--) {
- if (overlayType == overlayStack[i]._type) {
+ if (overlayType === overlayStack[i]._type) {
+ return overlayStack[i];
+ }
+ }
+ return null;
+ }
+
+ static getByHandle(handle) {
+ for (let i = overlayStack.length - 1; i >= 0; i--) {
+ if (handle === overlayStack[i]._handle) {
return overlayStack[i];
}
}