Skip to content

Commit df9f997

Browse files
author
Vladimir Enchev
committed
Merge pull request NativeScript#1154 from NativeScript/observable-array-fix
setItem event fixed
2 parents a55fb64 + bee1fcc commit df9f997

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

apps/tests/observable-array-tests.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,31 @@ export var test_ObservableArray_setItemShouldSetCorrectItem = function () {
8585
TKUnit.assert(array.getItem(1) === 5, "ObservableArray setItem() should set correct item!");
8686
};
8787

88+
export var test_ObservableArray_setItemShouldRaiseCorrectEvent = function () {
89+
// <snippet module="data/observable-array" title="observable-array">
90+
// ### Set item at specified index using setItem(index, item) method and observe change event data.
91+
// ``` JavaScript
92+
var index: number;
93+
var action: string;
94+
var addedCount: number;
95+
var removed: Array<number>;
96+
97+
var array = new observableArrayModule.ObservableArray([1, 2, 3]);
98+
array.on("change", (args) => {
99+
index = args.index; // Index of the changed item.
100+
action = args.action; // Action. In this case Update.
101+
addedCount = args.addedCount; // Number of added items. In this case 1.
102+
removed = args.removed; // Array of removed items. In this case with single item (2).
103+
});
104+
array.setItem(1, 5);
105+
// ```
106+
// </snippet>
107+
TKUnit.assertEqual(index, 1);
108+
TKUnit.assertEqual(action, observableArrayModule.ChangeType.Update);
109+
TKUnit.assertEqual(addedCount, 1);
110+
TKUnit.assertEqual(removed[0], 2);
111+
};
112+
88113
export var test_ObservableArray_concatShouldReturnNewArrayWithNewItemsAtTheEnd = function () {
89114
// <snippet module="data/observable-array" title="observable-array">
90115
// ### Use concat() method to combine ObservableArray with array.
@@ -567,7 +592,7 @@ export var test_ObservableArray_lastIndexOfShouldReturnCorrectIndex = function (
567592
var result = array.lastIndexOf("two");
568593
// ```
569594
// </snippet>
570-
TKUnit.assert(result === 2, "ObservableArray lastIndexOf() should return correct index!");
595+
TKUnit.assert(result === 2, "ObservableArray lastIndexOf() should return correct index!");
571596
};
572597

573598
export var test_ObservableArray_lastIndexOfShouldReturnCorrectIndexStartingFrom = function () {

data/observable-array/observable-array.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,14 @@ export class ObservableArray<T> extends observable.Observable implements observa
5050
return this._array[index];
5151
}
5252
setItem(index: number, value: T) {
53+
let oldValue = this._array[index];
5354
this._array[index] = value;
5455

5556
this.notify(<observableArrayDef.ChangedData<T>>{
5657
eventName: CHANGE, object: this,
5758
action: ChangeType.Update,
5859
index: index,
59-
removed: new Array(1),
60+
removed: [oldValue],
6061
addedCount: 1
6162
});
6263
}

0 commit comments

Comments
 (0)