NativeScript - обработка событий

В каждом приложении с графическим пользовательским интерфейсом события играют очень важную роль в обеспечении взаимодействия с пользователем. Каждый раз, когда пользователь взаимодействует с приложением, возникает событие и выполняется соответствующее действие.

Например, когда пользователь нажимает кнопку «Войти» на странице входа в приложение, запускается процесс входа в систему.

В событиях участвуют два участника -

  • Event sender - объект, вызывающий собственно событие.

  • Event listener - функция, которая прослушивает определенное событие, а затем выполняется, когда событие запускается.

Наблюдаемый класс

Это предопределенный класс для обработки событий. Это определено ниже -

const Observable = require("tns-core-modules/data/observable").Observable;

В NativeScript почти каждый объект является производным от класса Observable, поэтому каждый объект поддерживает события.

Слушатель событий

Давайте разберемся, как создать объект и добавить прослушиватель событий к объекту в этой главе.

Шаг 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

Альтернативный способ прикрепить событие - через сам пользовательский интерфейс, как указано ниже -

<Button text="click" (tap)="onTap($event)"></Button>

Вот,

$ event имеет тип EventData. EventData содержит два свойства, и они следующие:

Object- Наблюдаемый экземпляр, который используется для создания события. В этом сценарии это объект Button.

EventName- Это название мероприятия. В этом сценарии это событие касания.

Шаг 6

Наконец, слушатель событий можно отсоединить / удалить в любое время, как указано ниже -

testButton.off(Button.onTap);

Вы также можете использовать другой формат, как показано ниже -

testButton.removeEventListener(Button.onTap);

Изменение BlankNgApp

Давайте изменим приложение BlankNgApp, чтобы лучше понимать события в NativeScript.

Шаг 1

Откройте пользовательский интерфейс домашнего компонента, 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>

Вот,

  • Tap - это событие, а Button - это событие.

  • 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