diff --git a/src/ol/object.js b/src/ol/object.js index 49e69c875b..1687d19ba5 100644 --- a/src/ol/object.js +++ b/src/ol/object.js @@ -206,7 +206,9 @@ ol.Object.prototype.set = function(key, value, opt_silent) { } else { var oldValue = this.values_[key]; this.values_[key] = value; - this.notify(key, oldValue); + if (oldValue !== value) { + this.notify(key, oldValue); + } } }; diff --git a/test/spec/ol/object.test.js b/test/spec/ol/object.test.js index 049ebea500..a08dba7c78 100644 --- a/test/spec/ol/object.test.js +++ b/test/spec/ol/object.test.js @@ -168,6 +168,13 @@ describe('ol.Object', function() { expect(event.key).to.be('k'); }); + it('dispatches events only if the value is different', function() { + o.set('k', 1); + o.set('k', 1); + expect(listener1.calledOnce).to.be(true); + expect(listener2.calledOnce).to.be(true); + }); + }); describe('setter', function() {