Knockout.js 淘汰选择-如何使用2个不同的观察值设置默认值

Knockout.js 淘汰选择-如何使用2个不同的观察值设置默认值,knockout.js,Knockout.js,嗨,我有一个选择在我的看法 <div data-bind="with: selectedInsurancePolicy"> <select data-bind="options: $parent.insuranceCompanies, optionsText: 'companyName', value: $parent.selectedInsurancePolicy.co

嗨,我有一个选择在我的看法

<div data-bind="with: selectedInsurancePolicy">
                <select data-bind="options: $parent.insuranceCompanies,
                   optionsText: 'companyName',
                   value: $parent.selectedInsurancePolicy.companyID">
</select>


注意
选择了带括号的保险策略()。由于它是可观察的,您需要调用它来检索其中的值。

您可以减少再现实际问题所需的代码吗?您不需要整个viewmodel来演示问题!你的问题标题和正文似乎不一致。你的实际问题是什么?我曾试图减少viewmodel,但所有这些都是必要的,我也调整了标题,并用粗体添加了一些说明。这可能是一个语言问题,但在重读几遍之后,粗体问题对我来说没有多大意义。-没有帮助的是,代码并不包含实际的复制,它只是其中的一部分。尝试创建一个工作堆栈片段,它只显示您正在询问的问题。(为此添加一点代码,但当您尝试删除其他位时:我认为,演示您的问题不需要所有这些可观察内容、地址细节等。)
var insuranceViewModel = function(companies, policies){
var self = this;

var companies = companies || {};
var policies = policies || {};


self.EditableInsuranceCompany = ko.observable();
self.EditableInsurancePolicy = ko.observable();

self.selectedInsuranceCompany = ko.observable();
self.selectedInsurancePolicy = ko.observable();
self.selectInsurancePolicyCompany = ko.observable();

self.insuranceCompanies = ko.observableArray(ko.utils.arrayMap(companies, function (company) {
    return new observableInsuranceCompany(company.id, company.name, company.address1, company.address2, company.city, company.postcode, company.phone, company.fax);
}));

self.insurancePolicies = ko.observableArray(ko.utils.arrayMap(policies, function (policy) {

    var companyName = ko.computed(function(){

        var company = ko.utils.arrayFirst(self.insuranceCompanies(), function(company) {
        return company.id == policy.companyID;
    })

    return company;
    });       
    console.log(companyName().companyName());
    return new observableInsurancePolicy(policy.id,policy.companyID,companyName().companyName(),policy.policyNumber,policy.expiry,policy.policyDetails);
}));

addInsurancePolicy = function(){
    return function(){
        totalInsurancePoliciesLoaded += 1;
        var company = new observableInsurancePolicy(totalInsurancePoliciesLoaded,1,"aviva","","","","","");
        self.insurancePolicies.push(company);
        self.selectedInsurancePolicy(company);
    };
};
}
<div data-bind="with: selectedInsurancePolicy">
                <select data-bind="options: $parent.insuranceCompanies,
                   optionsText: 'companyName',
                   value: $parent.selectedInsurancePolicy().companyID">
</select>