diff --git a/apps/tests/observable-array-tests.ts b/apps/tests/observable-array-tests.ts index d4ba7fd29..6a4b852fd 100644 --- a/apps/tests/observable-array-tests.ts +++ b/apps/tests/observable-array-tests.ts @@ -45,6 +45,21 @@ export var test_ObservableArray_shouldCreateArrayFromSpecifiedLength = function TKUnit.assert(array.length === 100, "ObservableArray should create array from specified length!"); }; +export var test_ObservableArray_shouldBeAbleToSetLength = function () { + // + // ### Set ObservableArray length to new value. + // ``` JavaScript + var array = new observableArrayModule.ObservableArray(100); + // + TKUnit.assert(array.length === 100, "ObservableArray should create array from specified length!"); + // + array.length = 50; + // ``` + // + + TKUnit.assert(array.length === 50, "ObservableArray should respect new length!"); +}; + export var test_ObservableArray_getItemShouldReturnCorrectItem = function () { // // ### Get item at specified index using getItem(index) method. diff --git a/data/observable-array/observable-array.ts b/data/observable-array/observable-array.ts index babdbd849..b026da7c1 100644 --- a/data/observable-array/observable-array.ts +++ b/data/observable-array/observable-array.ts @@ -1,5 +1,6 @@ import observable = require("data/observable"); import observableArrayDef = require("data/observable-array"); +import types = require("utils/types"); export class ChangeType implements observableArrayDef.ChangeType { static Add = "add"; @@ -66,6 +67,12 @@ export class ObservableArray extends observable.Observable implements observa get length(): number { return this._array.length; } + set length(value: number) { + if (types.isNumber(value) && this._array && this._array.length !== value) { + this._array = this._array.slice(0, value); + this._notifyLengthChange(); + } + } /** * Returns a string representation of an array.