-
Notifications
You must be signed in to change notification settings - Fork 48
/
computed.html
66 lines (50 loc) · 1.23 KB
/
computed.html
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
<style>
body {
padding: 50px;
font: 14px Helvetica, Arial;
}
.hide {
display: none;
}
</style>
<script src="../build/build.js"></script>
<h1>Computed</h1>
<p>Computed properties demonstration.</p>
<div id="user">
<div data-hide="removed < removed_at">
<p>first: <em data-text="first"></em></p>
<p>last: <em data-text="last"></em></p>
<p>full: <em data-text="fullname < first last"></em></p>
</div>
</div>
<script>
var reactive = require('reactive');
var Emitter = require('component-emitter');
function User(first, last) {
this.first = first;
this.last = last;
this.removed_at = null;
}
Emitter(User.prototype);
User.prototype.removed = function(){
return !! this.removed_at;
};
User.prototype.fullname = function(){
return this.first + ' ' + this.last;
};
var user = new User('Tobi', 'Ferret');
var el = document.querySelector('#user');
reactive(el, user);
setTimeout(function(){
user.first = 'Loki';
user.emit('change first');
}, 2000);
setTimeout(function(){
user.last = 'Holowaychuk';
user.emit('change last');
}, 4000);
setTimeout(function(){
user.removed_at = new Date;
user.emit('change removed_at');
}, 6000);
</script>