Ionic - Javascript Popover
นี่คือมุมมองที่จะปรากฏเหนือมุมมองปกติ
ใช้ Popover
สามารถสร้าง Popover ได้โดยใช้ ion-popover-viewธาตุ. ควรเพิ่มองค์ประกอบนี้ในเทมเพลต HTML และไฟล์$ionicPopover ต้องฉีดบริการเข้าไปในตัวควบคุม
มีสามวิธีในการเพิ่มป๊อปโอเวอร์ อันแรกคือfromTemplateวิธีการซึ่งอนุญาตให้ใช้เทมเพลตแบบอินไลน์ วิธีที่สองและสามในการเพิ่มป๊อปโอเวอร์คือการใช้ไฟล์fromTemplateUrl วิธี.
ให้เราเข้าใจ fromtemplate วิธีการตามที่อธิบายด้านล่าง
รหัสตัวควบคุมสำหรับวิธี Fromtemplate
.controller('DashCtrl', function($scope, $ionicLoading, $ionicPopover) {
// .fromTemplate() method
var template = '<ion-popover-view>' + '<ion-header-bar>' +
'<h1 class = "title">Popover Title</h1>' +
'</ion-header-bar>'+ '<ion-content>' +
'Popover Content!' + '</ion-content>' + '</ion-popover-view>';
$scope.popover = $ionicPopover.fromTemplate(template, {
scope: $scope
});
$scope.openPopover = function($event) {
$scope.popover.show($event);
};
$scope.closePopover = function() {
$scope.popover.hide();
};
//Cleanup the popover when we're done with it!
$scope.$on('$destroy', function() {
$scope.popover.remove();
});
// Execute action on hide popover
$scope.$on('popover.hidden', function() {
// Execute action
});
// Execute action on remove popover
$scope.$on('popover.removed', function() {
// Execute action
});
})
ตามที่กล่าวไว้ข้างต้นวิธีที่สองและสามในการเพิ่มป๊อปโอเวอร์คือการใช้ fromTemplateUrlวิธี. รหัสคอนโทรลเลอร์จะเหมือนกันสำหรับทั้งสองวิธียกเว้นfromTemplateUrl มูลค่า.
หากเพิ่ม HTML ลงในเทมเพลตที่มีอยู่ URL จะเป็นไฟล์ popover.html. หากเราต้องการวาง HTML ในโฟลเดอร์แม่แบบ URL จะเปลี่ยนเป็นtemplates/popover.html.
ตัวอย่างทั้งสองได้อธิบายไว้ด้านล่าง
รหัสคอนโทรลเลอร์สำหรับ fromTemplateUrl
.controller('MyCtrl', function($scope, $ionicPopover) {
$ionicPopover.fromTemplateUrl('popover.html', {
scope: $scope
}).then(function(popover) {
$scope.popover = popover;
});
$scope.openPopover = function($event) {
$scope.popover.show($event);
};
$scope.closePopover = function() {
$scope.popover.hide();
};
//Cleanup the popover when we're done with it!
$scope.$on('$destroy', function() {
$scope.popover.remove();
});
// Execute action on hide popover
$scope.$on('popover.hidden', function() {
// Execute action
});
// Execute action on remove popover
$scope.$on('popover.removed', function() {
// Execute action
});
})
ตอนนี้เราจะเพิ่มไฟล์ script ด้วยเทมเพลตไปยังไฟล์ HTML ซึ่งเราใช้สำหรับการเรียกใช้ฟังก์ชัน popover
โค้ด HTML จากไฟล์ HTML ที่มีอยู่
<script id = "popover.html" type = "text/ng-template">
<ion-popover-view>
<ion-header-bar>
<h1 class = "title">Popover Title</h1>
</ion-header-bar>
<ion-content>
Popover Content!
</ion-content>
</ion-popover-view>
</script>
หากเราต้องการสร้าง HTML เป็นไฟล์แยกต่างหากเราสามารถสร้างไฟล์ HTML ใหม่ในไฟล์ templates และใช้รหัสเดียวกับที่เราใช้ในตัวอย่างข้างต้นโดยไม่มีไฟล์ script แท็ก
ไฟล์ HTML ที่สร้างขึ้นใหม่มีดังนี้
<ion-popover-view>
<ion-header-bar>
<h1 class = "title">Popover Title</h1>
</ion-header-bar>
<ion-content>
Popover Content!
</ion-content>
</ion-popover-view>
สิ่งสุดท้ายที่เราต้องการคือสร้างปุ่มที่จะคลิกเพื่อแสดงป๊อปโอเวอร์
<button class = "button" ng-click = "openPopover($event)">Add Popover</button>
ไม่ว่าเราจะเลือกวิธีใดจากตัวอย่างข้างต้นผลลัพธ์จะเหมือนกันเสมอ
ตารางต่อไปนี้แสดงไฟล์ $ionicPopover วิธีการที่สามารถใช้ได้
วิธี | ตัวเลือก | ประเภท | รายละเอียด |
---|---|---|---|
เริ่มต้น (ตัวเลือก) | ขอบเขต focusFirst, backdropClickToClose, hardwareBackButtonClose | วัตถุบูลีนบูลีนบูลีน | Scopeใช้เพื่อส่งผ่านขอบเขตที่กำหนดเองไปยัง popover ค่าเริ่มต้นคือ $ rootScopefocusFirstInput ใช้เพื่อโฟกัสอัตโนมัติอินพุตแรกของป็อปโอเวอร์ backdropClickToClose ใช้เพื่อปิดป็อปโอเวอร์เมื่อคลิกฉากหลัง hardwareBackButtonClose ใช้เพื่อปิดป็อปโอเวอร์เมื่อกดปุ่มย้อนกลับของฮาร์ดแวร์ |
แสดง ($ เหตุการณ์) | $ เหตุการณ์ | สัญญา | แก้ไขได้เมื่อการแสดงป๊อปโอเวอร์เสร็จสิ้น |
ซ่อน () | / | สัญญา | แก้ไขได้เมื่อการซ่อนป๊อปโอเวอร์เสร็จสิ้น |
ลบ () | / | สัญญา | แก้ไขได้เมื่อการลบป๊อปโอเวอร์เสร็จสิ้น |
isShown () | / | บูลีน | ส่งคืนค่าจริงหากมีการแสดงป๊อปโอเวอร์หรือเป็นเท็จหากไม่ใช่ |