Events.Pseudos

Визначає псевдо-подію :once для класів, що реалізували клас Events, а також метод definePseudos для додавання власних.

Pseudo Events

Як і Element.Event.Pseudos для Elements, ви можете використовувати псевдо для Class Events. Псевдо-подія виглядає так само, як CSS-псевдо: event:pseudo(value). event — це назва події, яку ви використовували раніше, а pseudo — це назва псевдо.

Pseudo: once

Подія спрацює лише один раз.

Приклад:

var database = new Class({
 
    Implements: Events,
 
    connect: function(){
        this.fireEvent('connect');
    }
 
});
 
var db = new database();
db.addEvent('connect:once', function(){
    alert('i am connected');
});
 
db.connect(); // will alert 'i am connected'
db.connect(); // nothing will happen

Pseudo: throttle

Забезпечує, щоб подія не спрацьовувала частіше одного разу за певний проміжок часу. Це особливо корисно для подій, які можуть спрацьовувати часто, але не дійсно необхідно виконувати важку функцію, наприклад, надсилання запитів.

За замовчуванням проміжок часу становить 250 мілісекунд.

Приклад:

myClass.addEvent('scroll:throttle', function(){
    // Will only fire once every 250 ms
});
 
myClass.fireEvent('scroll'); // is fired
myClass.fireEvent('scroll'); // throttled
myClass.fireEvent.delay(300, myClass, 'scroll'); // after 250 ms, so it's fired
 
myClass.addEvent('resize:throttle(400)', function(){
    // Will only fire once every 400 ms
});

Pseudo: pause

Подія спрацьовує лише тоді, коли оригінальна подія не спрацьовує знову протягом заданого часу. Отже, коли спрацьовує перша подія, а друга — через 100 мс, перша подія скасовується, і спрацьовує лише друга.

За замовчуванням час паузи становить 250 мілісекунд.

Приклад:

myClass.addEvent('keydown:pause', function(){
    // Default time is 250 ms
});
myClass.fireEvent('keydown'); // The first event is cancelled
myClass.fireEvent('keydown'); // this one will fired
myClass.fireEvent.delay(1000, myClass, 'keydown'); // This one is after 250 ms, so the previous is not cancelled
 
myClass.addEvent('keydown:pause(100)', function(){
    // The pause time is now 100 ms.
});

Events

Function: Events.definePseudo

Ця функція визначає новий псевдо.

Синтаксис:

Events.definePseudo(name, fn);

Аргументи:

  1. name - (string) Назва псевдо, наприклад once стане click:once
  2. fn - (function) Функція, яка викликається при спрацюванні події. Ця функція повинна вирішувати, що станеться з подією, наприклад, виконати подію та видалити її

Signature:

fn(split, fn, args)
  1. split - (object) Розібраний об'єкт рядка, переданого в addEvent: event:pseudo(value)
    • event - (string) частина перед :
    • value - (string) між ( та )
    • pseudo - (string) між : та (
    • original - (string) оригінальна назва події, отже event:pseudo(value)
  2. fn - (function) Це функція, передана в метод addEvent. Тобто, це 'fn' у myClass.addEvent('event:pseudo', fn)
  3. args - (array) Аргументи, передані в метод 'fireEvent'.

Приклад:

Ось як реалізовано псевдо :once

Events.definePseudo('once', function(split, fn, args){
    fn.apply(this, args)
    this.removeEvent(split.original, fn);
});

Эта документация распостраняется на правах Attribution-NonCommercial-ShareAlike 3.0 License.
Оригинал документации на английском.
© Linux.ria.com, 2008-2026