mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-26 03:01:51 +08:00
Merge pull request #434 from NativeScript/nnikolov/ListViewBindingContextIssue
BindingContext set two times on adding item to ListView. Fixed issue #410.
This commit is contained in:
@ -5,6 +5,7 @@ import viewModule = require("ui/core/view");
|
||||
import observable = require("data/observable");
|
||||
import types = require("utils/types");
|
||||
import platform = require("platform");
|
||||
import utils = require("utils/utils");
|
||||
|
||||
// <snippet module="ui/list-view" title="list-view">
|
||||
// # ListView
|
||||
@ -580,6 +581,38 @@ export function test_bindingToParentObjectWithSpacesInIndexer() {
|
||||
helper.buildUIAndRunTest(listView, testAction);
|
||||
}
|
||||
|
||||
export function test_ConverterIsCalledJustOnce_onAddingItemsToListView() {
|
||||
var listView = new listViewModule.ListView();
|
||||
var converterCalledCounter = 0;
|
||||
|
||||
var testConverter = function (value) {
|
||||
converterCalledCounter++;
|
||||
return value;
|
||||
}
|
||||
|
||||
app.resources["testConverter"] = testConverter;
|
||||
|
||||
function testAction(views: Array<viewModule.View>) {
|
||||
var listViewModel = new observable.Observable();
|
||||
listViewModel.set("items", [1, 2, 3]);
|
||||
listView.bindingContext = listViewModel;
|
||||
|
||||
listView.bind({ sourceProperty: "items", targetProperty: "items" });
|
||||
listView.itemTemplate = "<Label id=\"testLabel\" text=\"{{ $value, $value | testConverter }}\" />";
|
||||
|
||||
TKUnit.wait(ASYNC);
|
||||
|
||||
if (utils.ios && utils.ios.MajorVersion < 8) {
|
||||
TKUnit.assertEqual(converterCalledCounter, listViewModel.get("items").length * 2, "Converter should be called once for every item.");
|
||||
}
|
||||
else {
|
||||
TKUnit.assertEqual(converterCalledCounter, listViewModel.get("items").length, "Converter should be called once for every item.");
|
||||
}
|
||||
}
|
||||
|
||||
helper.buildUIAndRunTest(listView, testAction);
|
||||
}
|
||||
|
||||
export function test_no_memory_leak_when_items_is_regular_array() {
|
||||
var createFunc = function (): listViewModule.ListView {
|
||||
var listView = new listViewModule.ListView();
|
||||
|
Reference in New Issue
Block a user