-
Notifications
You must be signed in to change notification settings - Fork 0
/
exampleuse.js
77 lines (62 loc) · 1.94 KB
/
exampleuse.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// --------
// Get it ready
// --------
// Bind to an object
var o = {};
PubSub(o);
// Or construct a new one
var c = new PubSub();
// Or even to jQuery!
PubSub(jQuery);
// Want the published path passed to each handler?
PubSub(o, true);
// Want to specify a different internally-unique handler (in case you want to use an event named "_sub")?
PubSub(o, true, "unique_string_here_52434675");
// Mix and match parameters!
PubSub(true, "uniq");
PubSub(o, "uniq");
// ------
// Use it
// ------
// Handle an event
x.subscribe("e", function(){
console.log("e!");
});
x.publish("e"); // "e!"
// Initialized with `true`? You've got the path, as parsed, as the last parameter!
x.subscribe("nested.event", function(){
var path = arguments[arguments.length-1];
console.log("Path: " + path.join("."));
});
x.publish("nested.event"); // "Path: nested.event"
// Bubbles up the hierarchy, too!
x.publish("nested.event.even.deeper.yet!"); // "Path: nested.event.even.deeper.yet!"
// Stop the bubbling at any time!
x.subscribe("nested.event.even", function() {
return false;
});
x.publish("nested.event.even.deeper.yet!"); // nothing happens!
// Global event listeners!
x.subscribe("", function(){
console.log("Event fired: " + arguments[arguments.length-1].join("."));
});
x.publish("an.event"); // "Event fired: an.event"
// Unsubscribe by handler!
var hand = function(){
console.error("failed to remove");
};
x.subscribe("remove.me", hand);
x.unsubscribe("remove.me", hand);
x.publish("remove.me") // nothing happens!
// Unsubscribe by path!
x.subscribe("remove.me", hand);
x.unsubscribe("remove.me");
x.publish("remove.me") // nothing happens!
// Unsubscribe recursively!
x.subscribe("remove.me", hand);
x.unsubscribe("remove", hand, true);
x.publish("remove.me") // nothing happens!
// Unsubscribe everything!
x.subscribe("remove", hand).subscribe("another.hierarchy", hand);
x.unsubscribe("", true);
x.publish("remove").publish("another.hierarchy"); // nothing happens!