mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 03:31:45 +08:00
Fixed Issue ##1235: ObservableArray does not raise its change
event when its `length' property is set.
This commit is contained in:
@ -606,6 +606,46 @@ export var test_ObservableArray_lastIndexOfShouldReturnCorrectIndexStartingFrom
|
|||||||
TKUnit.assert(result === 1, "ObservableArray lastIndexOf() should return correct index!");
|
TKUnit.assert(result === 1, "ObservableArray lastIndexOf() should return correct index!");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export var test_ObservableArray_settingLengthToZeroPerformsSplice = function () {
|
||||||
|
var array = new observableArrayModule.ObservableArray([1, 2, 3]);
|
||||||
|
|
||||||
|
var changeRaised = false;
|
||||||
|
array.on("change", (args: observableArrayModule.ChangedData<number>) => {
|
||||||
|
changeRaised = true;
|
||||||
|
TKUnit.assertEqual(args.object, array);
|
||||||
|
TKUnit.assertEqual(args.eventName, "change");
|
||||||
|
TKUnit.assertEqual(args.action, observableArrayModule.ChangeType.Splice);
|
||||||
|
TKUnit.assertEqual(args.index, 0);
|
||||||
|
TKUnit.assertEqual(args.addedCount, 0);
|
||||||
|
TKUnit.arrayAssert(args.removed, [1, 2, 3]);
|
||||||
|
});
|
||||||
|
|
||||||
|
array.length = 0;
|
||||||
|
|
||||||
|
TKUnit.assertEqual(array.length, 0);
|
||||||
|
TKUnit.assertTrue(changeRaised);
|
||||||
|
};
|
||||||
|
|
||||||
|
export var test_ObservableArray_settingLengthToSomethingPerformsSplice = function () {
|
||||||
|
var array = new observableArrayModule.ObservableArray([1, 2, 3]);
|
||||||
|
|
||||||
|
var changeRaised = false;
|
||||||
|
array.on("change", (args: observableArrayModule.ChangedData<number>) => {
|
||||||
|
changeRaised = true;
|
||||||
|
TKUnit.assertEqual(args.object, array);
|
||||||
|
TKUnit.assertEqual(args.eventName, "change");
|
||||||
|
TKUnit.assertEqual(args.action, observableArrayModule.ChangeType.Splice);
|
||||||
|
TKUnit.assertEqual(args.index, 1);
|
||||||
|
TKUnit.assertEqual(args.addedCount, 0);
|
||||||
|
TKUnit.arrayAssert(args.removed, [2, 3]);
|
||||||
|
});
|
||||||
|
|
||||||
|
array.length = 1;
|
||||||
|
|
||||||
|
TKUnit.assertEqual(array.length, 1);
|
||||||
|
TKUnit.assertTrue(changeRaised);
|
||||||
|
};
|
||||||
|
|
||||||
var array = new observableArrayModule.ObservableArray();
|
var array = new observableArrayModule.ObservableArray();
|
||||||
|
|
||||||
// We do not have indexer!
|
// We do not have indexer!
|
||||||
|
@ -70,8 +70,7 @@ export class ObservableArray<T> extends observable.Observable implements observa
|
|||||||
}
|
}
|
||||||
set length(value: number) {
|
set length(value: number) {
|
||||||
if (types.isNumber(value) && this._array && this._array.length !== value) {
|
if (types.isNumber(value) && this._array && this._array.length !== value) {
|
||||||
this._array = this._array.slice(0, value);
|
this.splice(value, this._array.length - value);
|
||||||
this._notifyLengthChange();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user