Merge pull request #970 from NativeScript/nnikolov/Issue966

Fixed two propertyChange event notifications.
This commit is contained in:
Nedyalko Nikolov
2015-10-21 16:39:38 +03:00
2 changed files with 22 additions and 2 deletions

View File

@ -479,3 +479,15 @@ export var test_ObservablesCreatedWithJSON_shouldNotInterfereWithOneAnother = fu
TKUnit.assert(propName2 === "property2", "propName2 should be 'property2'");
TKUnit.assert(newValue2 === 20, "newValue2 should be 20");
};
export function test_ObservablesCreatedWithJSON_shouldNotEmitTwoTimesPropertyChangeEvent() {
var testObservable = new observable.Observable({ "property1": 1 });
var propertyChangeCounter = 0;
var propertyChangeHandler = function (args) {
propertyChangeCounter++;
}
testObservable.on(observable.Observable.propertyChangeEvent, propertyChangeHandler);
testObservable.set("property1", 2);
TKUnit.assertEqual(propertyChangeCounter, 1, "PropertyChange event should be fired only once for a single change.");
}

View File

@ -121,11 +121,19 @@ export class Observable implements definition.Observable {
return this[name];
}
private disableNotifications = false;
public _setCore(data: definition.PropertyChangeData) {
this.disableNotifications = true;
this[data.propertyName] = data.value;
this.disableNotifications = false;
}
public notify<T extends definition.EventData>(data: T) {
if (this.disableNotifications) {
return;
}
var observers = this._getEventList(data.eventName);
if (!observers) {
return;