Skip to content

Commit a6d2fc6

Browse files
author
Vladimir Enchev
committed
Merge pull request NativeScript#139 from NativeScript/set-observable-array-length-
missing setter for observable array added
2 parents 562fb02 + 8174653 commit a6d2fc6

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

apps/tests/observable-array-tests.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,21 @@ export var test_ObservableArray_shouldCreateArrayFromSpecifiedLength = function
4545
TKUnit.assert(array.length === 100, "ObservableArray should create array from specified length!");
4646
};
4747

48+
export var test_ObservableArray_shouldBeAbleToSetLength = function () {
49+
// <snippet module="data/observable-array" title="observable-array">
50+
// ### Set ObservableArray length to new value.
51+
// ``` JavaScript
52+
var array = new observableArrayModule.ObservableArray(100);
53+
// <hide>
54+
TKUnit.assert(array.length === 100, "ObservableArray should create array from specified length!");
55+
// </hide>
56+
array.length = 50;
57+
// ```
58+
// </snippet>
59+
60+
TKUnit.assert(array.length === 50, "ObservableArray should respect new length!");
61+
};
62+
4863
export var test_ObservableArray_getItemShouldReturnCorrectItem = function () {
4964
// <snippet module="data/observable-array" title="observable-array">
5065
// ### Get item at specified index using getItem(index) method.

data/observable-array/observable-array.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import observable = require("data/observable");
22
import observableArrayDef = require("data/observable-array");
3+
import types = require("utils/types");
34

45
export class ChangeType implements observableArrayDef.ChangeType {
56
static Add = "add";
@@ -66,6 +67,12 @@ export class ObservableArray<T> extends observable.Observable implements observa
6667
get length(): number {
6768
return this._array.length;
6869
}
70+
set length(value: number) {
71+
if (types.isNumber(value) && this._array && this._array.length !== value) {
72+
this._array = this._array.slice(0, value);
73+
this._notifyLengthChange();
74+
}
75+
}
6976

7077
/**
7178
* Returns a string representation of an array.

0 commit comments

Comments
 (0)