Merge pull request #139 from NativeScript/set-observable-array-length-

missing setter for observable array added
This commit is contained in:
Vladimir Enchev
2015-05-11 11:45:17 +03:00
2 changed files with 22 additions and 0 deletions

View File

@@ -45,6 +45,21 @@ export var test_ObservableArray_shouldCreateArrayFromSpecifiedLength = function
TKUnit.assert(array.length === 100, "ObservableArray should create array from specified length!"); TKUnit.assert(array.length === 100, "ObservableArray should create array from specified length!");
}; };
export var test_ObservableArray_shouldBeAbleToSetLength = function () {
// <snippet module="data/observable-array" title="observable-array">
// ### Set ObservableArray length to new value.
// ``` JavaScript
var array = new observableArrayModule.ObservableArray(100);
// <hide>
TKUnit.assert(array.length === 100, "ObservableArray should create array from specified length!");
// </hide>
array.length = 50;
// ```
// </snippet>
TKUnit.assert(array.length === 50, "ObservableArray should respect new length!");
};
export var test_ObservableArray_getItemShouldReturnCorrectItem = function () { export var test_ObservableArray_getItemShouldReturnCorrectItem = function () {
// <snippet module="data/observable-array" title="observable-array"> // <snippet module="data/observable-array" title="observable-array">
// ### Get item at specified index using getItem(index) method. // ### Get item at specified index using getItem(index) method.

View File

@@ -1,5 +1,6 @@
import observable = require("data/observable"); import observable = require("data/observable");
import observableArrayDef = require("data/observable-array"); import observableArrayDef = require("data/observable-array");
import types = require("utils/types");
export class ChangeType implements observableArrayDef.ChangeType { export class ChangeType implements observableArrayDef.ChangeType {
static Add = "add"; static Add = "add";
@@ -66,6 +67,12 @@ export class ObservableArray<T> extends observable.Observable implements observa
get length(): number { get length(): number {
return this._array.length; 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. * Returns a string representation of an array.