This is an extended class of MVCObject.
@Treri creates MVCObject, this is great, and I appreciate for his work.
But he does not implement the "addEventListener" method. And I wanted to use similar methods, such as "on()", "once()", "emit()", and so on, so I decided to extend the MVCObject class.
You can use set(key, value)
and get(key)
methods basically.
Set a new value with set(key)
method, you can catch the event named (key)_changed
.
var mvcclass = require('mvcclass');
var myClass = new mvcclass();
myClass.on('value1_changed', function(key) {
console.log('The value1 is changed: ' + this.get('value1'));
});
myClass.set('value1', 'test');
Because of inheriting EventEmitter2 module, you can also use as event emitter.
myClass.on('myEvent', function(data) {
console.log('myEvent: ' + data);
});
myClass.emit('myEvent', 'hi!');
var mvcclass = require('mvcclass');
var myClass = new mvcclass({
'value1': 'Hello World',
'value2': 3
});
var onValueChanged = function(key) {
console.log('--> eventName: ' + this.event + ', newValue: ' + this.get(key));
};
myClass.on('value1_changed', onValueChanged);
myClass.on('value2_changed', onValueChanged);
myClass.set('value1', 'Welcome!');
myClass.set('value2', myClass.get('value2') + 15);
// Outputs
//
// --> eventName: value1_changed, newValue: Welcome!
// --> eventName: value2_changed, newValue: 18
var myClass = new mvcclass({
'wildcard': true, // wildcard, delimiter,
'delimiter': '_',
'value1': 'Hello World',
'value2': 3
});
var onValueChanged = function(key) {
console.log('--> eventName: ' + this.event + ', newValue: ' + this.get(key));
};
myClass.on('*_changed', onValueChanged);
myClass.set('value1', 'Welcome!');
myClass.set('value2', myClass.get('value2') + 15);
// Outputs
//
// --> eventName: value1_changed, newValue: Welcome!
// --> eventName: value2_changed, newValue: 18
setValues(object)
method allows you to set JSON Object as key-value
pairs.
var onValueChanged = function(key) {
console.log('--> eventName: ' + this.event + ', newValue: ' + this.get(key));
};
myClass.on('*_changed', onValueChanged);
myClass.setValues({
'value1': 'Welcome!',
'value2': myClass.get('value2') + 15
});
// Outputs
//
// --> eventName: value1_changed, newValue: Welcome!
// --> eventName: value2_changed, newValue: 18
bindTo()
method sets the value that stored into the class to another object.
var myClass = new mvcclass({
'enable': true
});
// anotherObject.enable = myClass.enable
var anotherObject = new mvcclass();
myClass.bindTo('enable', anotherObject);
anotherObject.on('enable_changed', function(key) {
console.log('--> (anotherObject) enable = ' + this.get(key));
});
myClass.set('enable', false);
// Outputs
//
// --> (anotherObject) enable = false
See MVCObject and EventEmitter2.
- version 0.1.2 Use EventEmitter2 instead of events internally.
You can get the event name with this.event
in event listeners.