Fixed: Setting the ListPicker.selectedIndex on pageLoaded selects the correct item but it is not rendered.

This commit is contained in:
Rossen Hristov
2015-03-12 09:42:05 +02:00
parent 6d77629301
commit 388f709768
7 changed files with 99 additions and 2 deletions

3
apps/pickers-demo/app.ts Normal file
View File

@ -0,0 +1,3 @@
import application = require("application");
application.mainModule = "app/main-page";
application.start();

View File

@ -0,0 +1,34 @@
import observableModule = require("data/observable");
import pagesModule = require("ui/page");
import model = require("./model");
import enums = require("ui/enums");
import labelModule = require("ui/label");
import listPickerModule = require("ui/list-picker");
import datePickerModule = require("ui/date-picker");
import timePickerModule = require("ui/time-picker");
var viewModel: model.WebViewModel;
var page: pagesModule.Page;
var label: labelModule.Label;
var listPicker: listPickerModule.ListPicker;
var datePicker: datePickerModule.DatePicker;
var timePicker: timePickerModule.TimePicker;
export function onPageLoaded(args: observableModule.EventData) {
viewModel = new model.WebViewModel();
page = <pagesModule.Page>args.object;
page.bindingContext = viewModel;
viewModel.items = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
viewModel.selectedIndex = 5;
label = page.getViewById<labelModule.Label>("label");
listPicker = page.getViewById<listPickerModule.ListPicker>("listPicker");
datePicker = page.getViewById<datePickerModule.DatePicker>("datePicker");
timePicker = page.getViewById<timePickerModule.TimePicker>("timePicker");
}
export function onTap(args: observableModule.EventData) {
console.log("onTap");
viewModel.items = ["Male", "Female"];
}

View File

@ -0,0 +1,9 @@
<Page loaded="onPageLoaded">
<StackLayout id="stack">
<Button id="button" text="GO!" height="50" width="100" tap="onTap"/>
<Label id="label" text="{{ selectedIndex }}" height="50" width="100" />
<ListPicker id="listPicker" selectedIndex="{{ selectedIndex }}" items="{{ items }}"/>
<DatePicker id="datePicker"/>
<TimePicker id="timePicker"/>
</StackLayout>
</Page>

View File

@ -0,0 +1,27 @@
import observable = require("data/observable");
export class WebViewModel extends observable.Observable {
constructor() {
super();
}
private _selectedIndex: number;
get selectedIndex(): number {
return this._selectedIndex;
}
set selectedIndex(value: number) {
console.log("selectedIndex:" + value);
this._selectedIndex = value;
this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "selectedIndex", value: value });
}
private _items: Array<string>
get items(): Array<string> {
return this._items;
}
set items(value: Array<string>) {
console.log("items:" + value);
this._items = value;
this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "items", value: value });
}
}

View File

@ -0,0 +1,2 @@
{ "name" : "pickers-demo",
"main" : "app.js" }