/// interface SelectorItem { text: string; value: any; selected: boolean; } class Selector { public caption: KnockoutObservable; public items: KnockoutObservableArray; public selected: (item: SelectorItem) => void; public cancelled: () => void; constructor() { this.caption = ko.observable(null); this.items = ko.observableArray([]); } public setParams(caption: string, items: SelectorItem[], success: (item: SelectorItem) => void, cancel: () => void): void { this.caption(caption); this.items.valueWillMutate(); this.items([]); this.items(items); this.items.valueHasMutated(); this.selected = success; this.cancelled = cancel; } public select(item: SelectorItem): void { this.selected(item); } public back(): void { this.cancelled(); } }