Class: Subject

caph.module.event. Subject

new Subject(type)

A class which represent the event type to manage observers.

Parameters:
Name Type Description
type String

The event type.

Since:
  • 2.0.0
See:
Throws:

Will throw an error if the type parameter is not passed or does not consist of lowercase string.

Example
var click = new caph.module.event.Subject('click');
 var keydown = new caph.module.event.Subject('keydown'); 
 var keyup = new caph.module.event.Subject('keyup');

Methods

add(observer) → {caph.module.event.Subject}

Adds an observer to the subject. If already exist, do nothing. The observer receives a new unique id after being added.

Parameters:
Name Type Description
observer caph.module.mixins.event.Observer

An observer to be managed.

Since:
  • 2.0.0
Returns:
Type
caph.module.event.Subject
Example
var Observer = $class({
     $extends: caph.ui.base.Component,
 
     onclick: function(message) {
         console.log(message);
     },
 
     onkeydown: function(message) {
         console.log(message);
     },
 
     onkeyup: function(message) {
         console.log(message);
     }
 });
 
 var observer = new Observer();
 
 var click = new caph.module.event.Subject('click');
 var keydown = new caph.module.event.Subject('keydown'); 
 var keyup = new caph.module.event.Subject('keyup');
 
 click.add(observer);
 keydown.add(observer);
 keyup.add(observer);

getType() → {String}

Gets the event type of subject.

Since:
  • 2.0.0
Returns:
Type
String
Example
var click = new caph.module.event.Subject('click');
 var keydown = new caph.module.event.Subject('keydown'); 
 var keyup = new caph.module.event.Subject('keyup');
 
 click.getType(); // 'click'
 keydown.getType(); // 'keydown'
 keyup.getType(); // 'keyup'

notify(message) → {caph.module.event.Subject}

Notify a received message to all observers.

Parameters:
Name Type Description
message caph.event.Messsage

A received message.

Since:
  • 2.0.0
Returns:
Type
caph.module.event.Subject
Example
var Observer = $class({
     $extends: caph.ui.base.Component,
 
     onclick: function(message) {
         console.log(message);
     }
 });
 
 var observer = new Observer();
 
 var click = new caph.module.event.Subject('click');
 click.add(observer);
 
 click.notify(new caph.event.Message({
     type: 'click',
     detail: {
         offsetX: 10,
         offsetY: 10
     }
 });

notifyTo(observer, message) → {caph.module.event.Subject}

Notify a received message to the designated observer. If the message propagation is stopped, will not propagate any more.

Parameters:
Name Type Description
observer caph.module.mixins.event.Observer

An observer to receive a message.

message caph.event.Messsage

A received message.

Since:
  • 2.0.0
Returns:
Type
caph.module.event.Subject
Example
var Observer = $class({
     $extends: caph.ui.base.Component,
 
     onclick: function(message) {
         console.log(message);
     }
 });
 
 var observer1 = new Observer();
 var observer2 = new Observer();
 
 var click = new caph.module.event.Subject('click');
 click.add(observer1);
 click.add(observer2);
 
 click.notifyTo(observer1, new caph.event.Message({
     type: 'click',
     detail: {
         offsetX: 10,
         offsetY: 10
     }
 });

remove(observer) → {caph.module.event.Subject}

Removes an observer from the subject if exist.

Parameters:
Name Type Description
observer caph.module.mixins.event.Observer

An observer to be removed.

Since:
  • 2.0.0
Returns:
Type
caph.module.event.Subject
Example
var Observer = $class({
     $extends: caph.ui.base.Component,
 
     onclick: function(message) {
         console.log(message);
     },
 
     onkeydown: function(message) {
         console.log(message);
     },
 
     onkeyup: function(message) {
         console.log(message);
     }
 });
 
 var observer = new Observer();
 
 var click = new caph.module.event.Subject('click');
 var keydown = new caph.module.event.Subject('keydown'); 
 var keyup = new caph.module.event.Subject('keyup');
 
 click.add(observer);
 keydown.add(observer);
 keyup.add(observer);
 
 click.remove(observer);
 keydown.remove(observer);
 keyup.remove(observer);