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.