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:
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:
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:
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:
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);