【问题标题】:how to setup value of select using knockout and typescript on async call如何在异步调用中使用敲除和打字稿设置选择值
【发布时间】:2015-06-29 19:49:33
【问题描述】:

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

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]);
    });
}

}

在 html 端它是这样绑定的。

    <select data-bind="options: providers, value: selectedProvider,  optionsCaption: '', optionsValue: 'prov_id', optionsText: 'FullName'"></select>

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

【问题讨论】:

    标签: javascript html knockout.js typescript


    【解决方案1】:

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

    设置构造函数

     this.selectedProvider = ko.observable();
    

    和加载函数

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

    工作!!

    【讨论】:

    • 请查看我实际想要的更新值:selectedProvider 我想要加载时选择。但我正在努力弄清楚你所说的。
    • 在构造函数中我有 this.selectedProvider = ko.observable();在 loadData 我正在做 this.selectedProvider = ko.observable(2);
    • 在构造函数中使用this.selectedProvider = ko.observable();,在loadData中使用this.selectedProvider(this.providers()[2]);
    • 我在构造函数中的第一行和全局类似于 selectedProvider: KnockoutObservable;但仍然无法正常工作。同样的东西适用于静态数组。即硬编码数组。
    • 在“那么”我的承诺中............ this.providers(data.ProviderList); this.selectedProvider(this.providers()[2]);和你说的构造函数。但仍然没有运气。
    猜你喜欢
    • 2020-03-01
    • 2017-09-10
    • 2019-04-09
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多