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

View File

@@ -6,6 +6,7 @@
*/
goog.provide('ol.Object');
goog.provide('ol.ObjectEventType');
goog.require('goog.array');
goog.require('goog.events');
@@ -13,6 +14,14 @@ goog.require('goog.events.EventTarget');
goog.require('goog.object');
/**
* @enum {string}
*/
ol.ObjectEventType = {
CHANGED: 'changed'
};
/**
* @enum {string}
*/
@@ -192,6 +201,7 @@ ol.Object.prototype.notify = function(key) {
ol.Object.prototype.notifyInternal_ = function(key) {
var eventType = ol.Object.getChangedEventType(key);
this.dispatchEvent(eventType);
this.dispatchEvent(ol.ObjectEventType.CHANGED);
};

View File

@@ -46,16 +46,19 @@ describe('ol.Object', function() {
describe('notify', function() {
var listener1, listener2;
var listener1, listener2, listener3;
beforeEach(function() {
listener1 = jasmine.createSpy();
goog.events.listen(o, 'k_changed', listener1);
listener2 = jasmine.createSpy();
goog.events.listen(o, 'changed', listener2);
var o2 = new ol.Object();
o2.bindTo('k', o);
listener2 = jasmine.createSpy();
goog.events.listen(o2, 'k_changed', listener2);
listener3 = jasmine.createSpy();
goog.events.listen(o2, 'k_changed', listener3);
});
it('dispatches events', function() {
@@ -63,24 +66,32 @@ describe('ol.Object', function() {
expect(listener1).toHaveBeenCalled();
});
it('dispatches events to bound objects', function() {
it('dispatches generic change events to bound objects', function() {
o.notify('k');
expect(listener2).toHaveBeenCalled();
});
it('dispatches events to bound objects', function() {
o.notify('k');
expect(listener3).toHaveBeenCalled();
});
});
describe('set', function() {
var listener1, o2, listener2;
var listener1, o2, listener2, listener3;
beforeEach(function() {
listener1 = jasmine.createSpy();
goog.events.listen(o, 'k_changed', listener1);
listener2 = jasmine.createSpy();
goog.events.listen(o, 'changed', listener2);
o2 = new ol.Object();
o2.bindTo('k', o);
listener2 = jasmine.createSpy();
goog.events.listen(o2, 'k_changed', listener2);
listener3 = jasmine.createSpy();
goog.events.listen(o2, 'k_changed', listener3);
});
it('dispatches events to object', function() {
@@ -88,15 +99,25 @@ describe('ol.Object', function() {
expect(listener1).toHaveBeenCalled();
});
it('dispatches events to bound object', function() {
it('dispatches generic change events to object', function() {
o.set('k', 1);
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() {
o2.set('k', 2);
expect(listener1).toHaveBeenCalled();
});
it('dispatches generic change events to object bound to', function() {
o2.set('k', 2);
expect(listener2).toHaveBeenCalled();
});
});
describe('bind', function() {