Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在异步调用中使用knockout和typescript设置select的值_Javascript_Html_Knockout.js_Typescript - Fatal编程技术网

Javascript 如何在异步调用中使用knockout和typescript设置select的值

Javascript 如何在异步调用中使用knockout和typescript设置select的值,javascript,html,knockout.js,typescript,Javascript,Html,Knockout.js,Typescript,我的视图模型代码如下所示 export class viewModel { providers: KnockoutObservableArray<PatientProviderModule.ProviderList>; selectedProvider: KnockoutObservable<PatientProviderModule.ProviderList>; billingService: BillingService; patientProviderInfo

我的视图模型代码如下所示

export class viewModel {
providers: KnockoutObservableArray<PatientProviderModule.ProviderList>;
selectedProvider: KnockoutObservable<PatientProviderModule.ProviderList>;

billingService: BillingService;


patientProviderInfo: KnockoutObservableArray<PatientProviderModel>;
constructor(selectedProvider: number) {
    this.providers = ko.observableArray<PatientProviderModule.ProviderList>();
    this.billingService = new BillingService();
    this.patientProviderInfo = ko.observableArray<PatientProviderModel>();
    this.loadData();
    this.selectedProvider = "what should come here?";
}
loadData = () => {
    this.billingService.getPatientAndProviderInfo().then((data: PatientProviderModel) => {
        this.providers.pushAll(data.ProviderList);
        this.selectedProvider = ko.observable(this.providers()[2]);
    });
}
    <select data-bind="options: providers, value: selectedProvider,  optionsCaption: '', optionsValue: 'prov_id', optionsText: 'FullName'"></select>
导出类视图模型{
提供者:淘汰赛;
selectedProvider:KnockoutObservable;
计费服务:计费服务;
patientProviderInfo:淘汰赛;
构造函数(selectedProvider:编号){
this.providers=ko.observearray();
this.billingService=新的billingService();
this.patientProviderInfo=ko.observableArray();
这是loadData();
this.selectedProvider=“这里应该有什么?”;
}
加载数据=()=>{
this.billingService.getPatientAndProviderInfo().then((数据:PatientProviderModel)=>{
this.providers.pushAll(data.ProviderList);
this.selectedProvider=ko.observable(this.providers()[2]);
});
}
}

在html方面,它是这样绑定的

export class viewModel {
providers: KnockoutObservableArray<PatientProviderModule.ProviderList>;
selectedProvider: KnockoutObservable<PatientProviderModule.ProviderList>;

billingService: BillingService;


patientProviderInfo: KnockoutObservableArray<PatientProviderModel>;
constructor(selectedProvider: number) {
    this.providers = ko.observableArray<PatientProviderModule.ProviderList>();
    this.billingService = new BillingService();
    this.patientProviderInfo = ko.observableArray<PatientProviderModel>();
    this.loadData();
    this.selectedProvider = "what should come here?";
}
loadData = () => {
    this.billingService.getPatientAndProviderInfo().then((data: PatientProviderModel) => {
        this.providers.pushAll(data.ProviderList);
        this.selectedProvider = ko.observable(this.providers()[2]);
    });
}
    <select data-bind="options: providers, value: selectedProvider,  optionsCaption: '', optionsValue: 'prov_id', optionsText: 'FullName'"></select>


loadData函数填充“提供者”中的下拉数据。填充之后,我将尝试选择该下拉列表中的最后一个选项。但它没有选择任何选项。请帮忙

您正在loadData中将selectedProvider异步设置为可观察的。这意味着,在UI绑定到您的模型时,字段还不是可观察的,因此不知道如何查找更改事件。您应该立即在构造函数中将selectedProvider实例化为新的可观察对象,然后在loadData中更新现有可观察对象的值

设置构造函数

 this.selectedProvider = ko.observable();
负载函数

this.selectedProvider(this.providers()[2].prov_id);

成功了

请查看我实际想要的更新值:selectedProvider我想要加载选择。但我正试图弄明白你说的是什么。在构造函数中,我有这个。selectedProvider=ko.observable();在loadData中,我正在这样做。selectedProvider=ko。observable(2);在构造函数中使用this.selectedProvider=ko.observable()和在loadData中使用
this.selectedProvider(this.providers()[2])
我在构造函数中的第一行和它的全局类似selectedProvider:KnockoutObservable;但仍然不起作用。同样的东西也适用于静态数组。i、 e.硬编码数组。在我承诺的“然后”中,我已经。。。。。。。。。。。。。。。。。。。。。。。。此.providers(数据.ProviderList);this.selectedProvider(this.providers()[2]);就像你说的。但还是没有运气。