mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Added application resources (used for binding converters), also some bug
fixes (binding related).
This commit is contained in:
@@ -429,6 +429,38 @@ export function test_loadMoreItems_not_raised_when_showing_many_items() {
|
||||
helper.buildUIAndRunTest(listView, testAction);
|
||||
}
|
||||
|
||||
export function test_usingAppLevelConvertersInListViewItems() {
|
||||
var listView = new listViewModule.ListView();
|
||||
|
||||
var dateConverter = function (value, format) {
|
||||
var result = format;
|
||||
var day = value.getDate();
|
||||
result = result.replace("DD", month < 10 ? "0" + day : day);
|
||||
var month = value.getMonth() + 1;
|
||||
result = result.replace("MM", month < 10 ? "0" + month : month);
|
||||
result = result.replace("YYYY", value.getFullYear());
|
||||
return result;
|
||||
};
|
||||
|
||||
app.resources["dateConverter"] = dateConverter;
|
||||
|
||||
var data = new observableArray.ObservableArray();
|
||||
|
||||
data.push({date: new Date()});
|
||||
|
||||
function testAction(views: Array<viewModule.View>) {
|
||||
listView.itemTemplate = "<Label id=\"testLabel\" text=\"{{ date, date | dateConverter('DD.MM.YYYY') }}\" />";
|
||||
listView.items = data;
|
||||
|
||||
TKUnit.wait(ASYNC);
|
||||
var nativeElementText = getTextFromNativeElementAt(listView, 0);
|
||||
|
||||
TKUnit.assertEqual(nativeElementText, dateConverter(new Date(), "DD.MM.YYYY"), "native element");
|
||||
};
|
||||
|
||||
helper.buildUIAndRunTest(listView, testAction);
|
||||
}
|
||||
|
||||
function loadViewWithItemNumber(args: listViewModule.ItemEventData) {
|
||||
if (!args.view) {
|
||||
args.view = new labelModule.Label();
|
||||
@@ -436,6 +468,19 @@ function loadViewWithItemNumber(args: listViewModule.ItemEventData) {
|
||||
(<labelModule.Label>args.view).text = "item " + args.index;
|
||||
}
|
||||
|
||||
function getTextFromNativeElementAt(listView: listViewModule.ListView, index: number): any {
|
||||
if (listView.android) {
|
||||
var nativeElement = listView.android.getChildAt(index);
|
||||
if (nativeElement instanceof android.view.ViewGroup) {
|
||||
return (<android.widget.TextView>(<any>nativeElement.getChildAt(0))).getText();
|
||||
}
|
||||
return (<android.widget.TextView>nativeElement).getText();
|
||||
}
|
||||
else if (listView.ios) {
|
||||
return listView.ios.visibleCells()[index].contentView.subviews[0].text;
|
||||
}
|
||||
}
|
||||
|
||||
function getNativeViewCount(listView: listViewModule.ListView): number {
|
||||
if (listView.android) {
|
||||
return listView.android.getChildCount();
|
||||
|
||||
@@ -8,6 +8,7 @@ import frameModule = require("ui/frame");
|
||||
import pageModule = require("ui/page");
|
||||
import listViewModule = require("ui/list-view");
|
||||
import buttonModule = require("ui/button");
|
||||
import observable = require("data/observable");
|
||||
|
||||
// <snippet module="ui/tab-view" title="TabView">
|
||||
// # TabView
|
||||
@@ -38,6 +39,8 @@ import tabViewModule = require("ui/tab-view");
|
||||
// ```
|
||||
// </snippet>
|
||||
|
||||
var ASYNC = 0.3;
|
||||
|
||||
function _createTabView(): tabViewModule.TabView {
|
||||
// <snippet module="ui/tab-view" title="TabView">
|
||||
// ## Creating a TabView
|
||||
@@ -367,6 +370,44 @@ export var testWhenNavigatingBackToANonCachedPageContainingATabViewWithAListView
|
||||
TKUnit.assert(listView !== undefined, "ListView should be created when navigating back to the main page.");
|
||||
}
|
||||
|
||||
export function testBindingIsRefreshedWhenTabViewItemIsUnselectedAndThenSelectedAgain() {
|
||||
helper.buildUIAndRunTest(_createTabView(), function (views: Array<viewModule.View>) {
|
||||
var viewModel = new observable.Observable();
|
||||
viewModel.set("counter", 0);
|
||||
frameModule.topmost().currentPage.bindingContext = viewModel;
|
||||
|
||||
var tabView = <tabViewModule.TabView>views[0];
|
||||
|
||||
var items = _createItems(10);
|
||||
|
||||
var StackLayout0 = new stackLayoutModule.StackLayout();
|
||||
var label0 = new labelModule.Label();
|
||||
label0.text = "Tab 0";
|
||||
label0.id = "testLabel";
|
||||
label0.bind({ sourceProperty: "counter", targetProperty: "text", twoWay: true });
|
||||
StackLayout0.addChild(label0);
|
||||
var tabEntry0 = {
|
||||
title: "Tab 0",
|
||||
view: StackLayout0
|
||||
};
|
||||
items.push(tabEntry0);
|
||||
tabView.items = items;
|
||||
|
||||
tabView.selectedIndex = 10;
|
||||
TKUnit.wait(ASYNC);
|
||||
|
||||
tabView.selectedIndex = 0;
|
||||
TKUnit.wait(ASYNC);
|
||||
|
||||
tabView.selectedIndex = 10;
|
||||
TKUnit.wait(ASYNC);
|
||||
var expectedValue = 5;
|
||||
viewModel.set("counter", expectedValue);
|
||||
var testLabel = <labelModule.Label>(tabView.items[10].view.getViewById("testLabel"))
|
||||
TKUnit.assertEqual(testLabel.text, expectedValue, "binding is not working!");
|
||||
});
|
||||
}
|
||||
|
||||
function _clickTheFirstButtonInTheListViewNatively(tabView: tabViewModule.TabView) {
|
||||
if (tabView.android) {
|
||||
var androidListView = <android.widget.ListView>tabView.android.getChildAt(0);
|
||||
|
||||
Reference in New Issue
Block a user