Dispatch generic changed events when any ol.Object property changes

This commit is contained in:
Tom Payne
2013-01-08 17:26:22 +01:00
parent 20e0557a4d
commit 21331d1065
2 changed files with 39 additions and 8 deletions
+10
View File
@@ -6,6 +6,7 @@
*/ */
goog.provide('ol.Object'); goog.provide('ol.Object');
goog.provide('ol.ObjectEventType');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.events'); goog.require('goog.events');
@@ -13,6 +14,14 @@ goog.require('goog.events.EventTarget');
goog.require('goog.object'); goog.require('goog.object');
/**
* @enum {string}
*/
ol.ObjectEventType = {
CHANGED: 'changed'
};
/** /**
* @enum {string} * @enum {string}
*/ */
@@ -192,6 +201,7 @@ ol.Object.prototype.notify = function(key) {
ol.Object.prototype.notifyInternal_ = function(key) { ol.Object.prototype.notifyInternal_ = function(key) {
var eventType = ol.Object.getChangedEventType(key); var eventType = ol.Object.getChangedEventType(key);
this.dispatchEvent(eventType); this.dispatchEvent(eventType);
this.dispatchEvent(ol.ObjectEventType.CHANGED);
}; };
+29 -8
View File
@@ -46,16 +46,19 @@ describe('ol.Object', function() {
describe('notify', function() { describe('notify', function() {
var listener1, listener2; var listener1, listener2, listener3;
beforeEach(function() { beforeEach(function() {
listener1 = jasmine.createSpy(); listener1 = jasmine.createSpy();
goog.events.listen(o, 'k_changed', listener1); goog.events.listen(o, 'k_changed', listener1);
listener2 = jasmine.createSpy();
goog.events.listen(o, 'changed', listener2);
var o2 = new ol.Object(); var o2 = new ol.Object();
o2.bindTo('k', o); o2.bindTo('k', o);
listener2 = jasmine.createSpy(); listener3 = jasmine.createSpy();
goog.events.listen(o2, 'k_changed', listener2); goog.events.listen(o2, 'k_changed', listener3);
}); });
it('dispatches events', function() { it('dispatches events', function() {
@@ -63,24 +66,32 @@ describe('ol.Object', function() {
expect(listener1).toHaveBeenCalled(); expect(listener1).toHaveBeenCalled();
}); });
it('dispatches events to bound objects', function() { it('dispatches generic change events to bound objects', function() {
o.notify('k'); o.notify('k');
expect(listener2).toHaveBeenCalled(); expect(listener2).toHaveBeenCalled();
}); });
it('dispatches events to bound objects', function() {
o.notify('k');
expect(listener3).toHaveBeenCalled();
});
}); });
describe('set', function() { describe('set', function() {
var listener1, o2, listener2; var listener1, o2, listener2, listener3;
beforeEach(function() { beforeEach(function() {
listener1 = jasmine.createSpy(); listener1 = jasmine.createSpy();
goog.events.listen(o, 'k_changed', listener1); goog.events.listen(o, 'k_changed', listener1);
listener2 = jasmine.createSpy();
goog.events.listen(o, 'changed', listener2);
o2 = new ol.Object(); o2 = new ol.Object();
o2.bindTo('k', o); o2.bindTo('k', o);
listener2 = jasmine.createSpy(); listener3 = jasmine.createSpy();
goog.events.listen(o2, 'k_changed', listener2); goog.events.listen(o2, 'k_changed', listener3);
}); });
it('dispatches events to object', function() { it('dispatches events to object', function() {
@@ -88,15 +99,25 @@ describe('ol.Object', function() {
expect(listener1).toHaveBeenCalled(); expect(listener1).toHaveBeenCalled();
}); });
it('dispatches events to bound object', function() { it('dispatches generic change events to object', function() {
o.set('k', 1); o.set('k', 1);
expect(listener2).toHaveBeenCalled(); expect(listener2).toHaveBeenCalled();
}); });
it('dispatches events to bound object', function() {
o.set('k', 1);
expect(listener3).toHaveBeenCalled();
});
it('dispatches events to object bound to', function() { it('dispatches events to object bound to', function() {
o2.set('k', 2); o2.set('k', 2);
expect(listener1).toHaveBeenCalled(); expect(listener1).toHaveBeenCalled();
}); });
it('dispatches generic change events to object bound to', function() {
o2.set('k', 2);
expect(listener2).toHaveBeenCalled();
});
}); });
describe('bind', function() { describe('bind', function() {