NativeScript - การจัดการเหตุการณ์
ในทุกแอปพลิเคชัน GUI เหตุการณ์มีบทบาทสำคัญมากในการเปิดใช้งานการโต้ตอบกับผู้ใช้ เมื่อใดก็ตามที่ผู้ใช้โต้ตอบกับแอปพลิเคชันเหตุการณ์จะเริ่มทำงานและการดำเนินการที่เกี่ยวข้องจะดำเนินการ
ตัวอย่างเช่นเมื่อผู้ใช้คลิกปุ่มเข้าสู่ระบบในหน้าเข้าสู่ระบบของแอปพลิเคชันจะเรียกกระบวนการเข้าสู่ระบบ
เหตุการณ์เกี่ยวข้องกับนักแสดงสองคน -
- Event sender - วัตถุที่เพิ่มเหตุการณ์จริง 
- Event listener - ฟังก์ชั่นที่รับฟังเหตุการณ์เฉพาะและดำเนินการเมื่อเหตุการณ์เริ่มทำงาน 
ระดับที่สังเกตได้
เป็นคลาสที่กำหนดไว้ล่วงหน้าเพื่อจัดการกับเหตุการณ์ต่างๆ มีการกำหนดไว้ด้านล่าง -
const Observable = require("tns-core-modules/data/observable").Observable;ใน NativeScript เกือบทุกอ็อบเจ็กต์มาจากคลาส Observable และอ็อบเจ็กต์ทุกตัวรองรับเหตุการณ์
Listener เหตุการณ์
ให้เราเข้าใจวิธีการสร้างวัตถุและเพิ่มตัวฟังเหตุการณ์ให้กับวัตถุในบทนี้
ขั้นตอนที่ 1
สร้างปุ่มที่ใช้สร้างเหตุการณ์ตามที่ระบุด้านล่าง -
const Button = require("tns-core-modules/ui/button").Button; 
const testButton = new Button();ขั้นตอนที่ 2
ถัดไปเพิ่มข้อความลงในปุ่มตามที่ระบุด้านล่าง -
testButton.text = "Click";ขั้นตอนที่ 3
สร้างฟังก์ชัน onTap ตามที่ระบุด้านล่าง -
let onTap = function(args) {
   console.log("you clicked!"); 
};ขั้นตอนที่ 4
ตอนนี้แนบเหตุการณ์การแตะเข้ากับฟังก์ชัน onTap ตามที่ระบุด้านล่าง -
testButton.on("tap", onTap, this);วิธีอื่นในการเพิ่มผู้ฟังเหตุการณ์มีดังนี้ -
testButton.addEventListener("tap", onTap, this);ขั้นตอนที่ 5
อีกวิธีหนึ่งในการแนบเหตุการณ์คือผ่าน UI ตามที่ระบุด้านล่าง -
<Button text="click" (tap)="onTap($event)"></Button>ที่นี่
$ event เป็นประเภท EventData EventData มีคุณสมบัติสองอย่างและมีดังต่อไปนี้ -
Object- อินสแตนซ์ที่สังเกตได้ซึ่งใช้เพื่อเพิ่มเหตุการณ์ ในสถานการณ์นี้เป็นวัตถุปุ่ม
EventName- เป็นชื่อเหตุการณ์ ในสถานการณ์นี้เป็นเหตุการณ์การแตะ
ขั้นตอนที่ 6
ในที่สุดผู้ฟังเหตุการณ์สามารถถอด / ลบออกได้ตลอดเวลาตามที่ระบุด้านล่าง -
testButton.off(Button.onTap);คุณยังสามารถใช้รูปแบบอื่นได้ตามที่แสดงด้านล่าง -
testButton.removeEventListener(Button.onTap);การแก้ไข BlankNgApp
ให้เราแก้ไขแอปพลิเคชัน BlankNgApp เพื่อให้เข้าใจเหตุการณ์ใน NativeScript ได้ดีขึ้น
ขั้นตอนที่ 1
เปิด UI ของส่วนประกอบภายในบ้าน src/app/home/home.component.html และเพิ่มรหัสด้านล่าง -
<ActionBar> 
   <Label text="Home"></Label> 
</ActionBar>
<StackLayout> 
   <Button text='Fire an event' class="-primary" color='gray' (tap)='onButtonTap($event)'></Button>
</StackLayout>ที่นี่
- แตะคือเหตุการณ์และปุ่มคือตัวเพิ่มเหตุการณ์ 
- onButtonTap เป็นตัวฟังเหตุการณ์ 
ขั้นตอนที่ 2
เปิดรหัสของส่วนประกอบบ้าน ‘src/app/home/home.component.ts’ และอัปเดตรหัสด้านล่าง -
import { Component, OnInit } from "@angular/core"; 
import { EventData } from "tns-core-modules/data/observable"; 
import { Button } from "tns-core-modules/ui/button" 
@Component({ 
   selector: "Home", 
   templateUrl: "./home.component.html" 
}) 
export class HomeComponent implements OnInit { 
   constructor() { 
      // Use the component constructor to inject providers. 
   } 
   ngOnInit(): void { 
      // Init your component properties here. 
   } 
   onButtonTap(args: EventData): void { 
      console.log(args.eventName); 
      const button = <Button>args.object; 
      console.log(button.text); 
   } 
}ที่นี่
- เพิ่มตัวฟังเหตุการณ์ใหม่ onButtonTap 
- พิมพ์ชื่อเหตุการณ์แตะและปุ่มข้อความเริ่มเหตุการณ์ในคอนโซล 
ขั้นตอนที่ 3
เรียกใช้แอปพลิเคชันและแตะปุ่ม มันพิมพ์บรรทัดด้านล่างในคอนโซล
LOG from device <device name>: tap 
LOG from device <device name>: Fire an event