ไอออนิก - Javascript Modal
เมื่อเปิดใช้งานอิออนโมดอลบานหน้าต่างเนื้อหาจะปรากฏที่ด้านบนของเนื้อหาปกติ Modal เป็นป๊อปอัปขนาดใหญ่โดยทั่วไปพร้อมฟังก์ชันการทำงานที่มากขึ้น Modal จะครอบคลุมทั้งหน้าจอตามค่าเริ่มต้น แต่สามารถปรับให้เหมาะสมได้ตามที่คุณต้องการ
การใช้ Modal
มีสองวิธีในการใช้โมดอลในไอออนิก วิธีหนึ่งคือการเพิ่มเทมเพลตแยกต่างหากและอีกวิธีหนึ่งคือการเพิ่มที่ด้านบนของไฟล์ HTML ปกติภายในไฟล์scriptแท็ก สิ่งแรกที่เราต้องทำคือเชื่อมต่อโมดอลของเรากับคอนโทรลเลอร์ของเราโดยใช้การฉีดแบบพึ่งพาเชิงมุม จากนั้นเราต้องสร้างโมดอล เราจะส่งผ่านขอบเขตและเพิ่มแอนิเมชั่นให้กับกิริยาของเรา
หลังจากนั้นเราจะสร้างฟังก์ชันสำหรับเปิดปิดทำลายโมดอล สองฟังก์ชั่นสุดท้ายถูกวางไว้ที่เราสามารถเขียนโค้ดที่จะถูกเรียกใช้หากโมดอลถูกซ่อนหรือลบออก หากคุณไม่ต้องการเรียกใช้ฟังก์ชันใด ๆ เมื่อโมดอลถูกลบหรือซ่อนคุณสามารถลบสองฟังก์ชันสุดท้ายได้
รหัสคอนโทรลเลอร์
.controller('MyController', 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();
};
//Cleanup the modal when we're done with it!
$scope.$on('$destroy', function() {
$scope.modal.remove();
});
// Execute action on hide modal
$scope.$on('modal.hidden', function() {
// Execute action
});
// Execute action on remove modal
$scope.$on('modal.removed', function() {
// Execute action
});
});
รหัส HTML
<script id = "my-modal.html" type = "text/ng-template">
<ion-modal-view>
<ion-header-bar>
<h1 class = "title">Modal Title</h1>
</ion-header-bar>
<ion-content>
<button class = "button icon icon-left ion-ios-close-outline"
ng-click = "closeModal()">Close Modal</button>
</ion-content>
</ion-modal-view>
</script>
วิธีที่เราแสดงในตัวอย่างสุดท้ายคือเมื่อไฟล์ script แท็กถูกใช้เป็นคอนเทนเนอร์ของโมดอลของเราภายในไฟล์ HTML ที่มีอยู่
วิธีที่สองคือการสร้างไฟล์เทมเพลตใหม่ภายในไฟล์ templatesโฟลเดอร์ เราจะใช้รหัสเดียวกับในตัวอย่างสุดท้ายของเรา แต่เราจะลบไฟล์script แท็กและเรายังต้องเปลี่ยน fromTemplateUrl ในคอนโทรลเลอร์เพื่อเชื่อมต่อโมดอลกับเทมเพลตที่สร้างขึ้นใหม่
รหัสคอนโทรลเลอร์
.controller('MyController', function($scope, $ionicModal) {
$ionicModal.fromTemplateUrl('templates/modal-template.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();
};
//Cleanup the modal when we're done with it!
$scope.$on('$destroy', function() {
$scope.modal.remove();
});
// Execute action on hide modal
$scope.$on('modal.hidden', function() {
// Execute action
});
// Execute action on remove modal
$scope.$on('modal.removed', function() {
// Execute action
});
});
รหัส HTML
<ion-modal-view>
<ion-header-bar>
<h1 class = "title">Modal Title</h1>
</ion-header-bar>
<ion-content>
<button class = "button icon icon-left ion-ios-close-outline"
ng-click = "closeModal()">Close Modal</button>
</ion-content>
</ion-modal-view>
วิธีที่สามในการใช้ Ionic modal คือการแทรก HTML แบบอินไลน์ เราจะใช้ไฟล์fromTemplate แทนฟังก์ชัน fromTemplateUrl.
รหัสคอนโทรลเลอร์
.controller('MyController', function($scope, $ionicModal) {
$scope.modal = $ionicModal.fromTemplate( '<ion-modal-view>' +
' <ion-header-bar>' +
'<h1 class = "title">Modal Title</h1>' +
'</ion-header-bar>' +
'<ion-content>'+
'<button class = "button icon icon-left ion-ios-close-outline"
ng-click = "closeModal()">Close Modal</button>' +
'</ion-content>' +
'</ion-modal-view>', {
scope: $scope,
animation: 'slide-in-up'
})
$scope.openModal = function() {
$scope.modal.show();
};
$scope.closeModal = function() {
$scope.modal.hide();
};
//Cleanup the modal when we're done with it!
$scope.$on('$destroy', function() {
$scope.modal.remove();
});
// Execute action on hide modal
$scope.$on('modal.hidden', function() {
// Execute action
});
// Execute action on remove modal
$scope.$on('modal.removed', function() {
// Execute action
});
});
ทั้งสามตัวอย่างจะมีผลเหมือนกัน เราจะสร้างปุ่มเพื่อเรียกใช้ไฟล์$ionicModal.show() เพื่อเปิดกิริยา
รหัส HTML
<button class = "button" ng-click = "openModal()"></button>
เมื่อเราเปิด Modal มันจะมีปุ่มที่จะใช้สำหรับปิดมัน เราสร้างปุ่มนี้ในเทมเพลต HTML
นอกจากนี้ยังมีตัวเลือกอื่น ๆ สำหรับการเพิ่มประสิทธิภาพโมดอล เราได้แสดงวิธีใช้แล้วscope และ animation. ตารางต่อไปนี้แสดงตัวเลือกอื่น ๆ
ตัวเลือก | ประเภท | รายละเอียด |
---|---|---|
focusFirstInput | บูลีน | มันจะโฟกัสอัตโนมัติอินพุตแรกของโมดอล |
backdropClickToClose | บูลีน | จะเปิดใช้งานการปิดโมดอลเมื่อแตะฉากหลัง ค่าเริ่มต้นเป็นจริง |
hardwareBackButtonClose | บูลีน | จะเปิดใช้งานการปิดโมดอลเมื่อคลิกปุ่มย้อนกลับของฮาร์ดแวร์ ค่าเริ่มต้นเป็นจริง |