Javascript KnockoutJs…ObservableArray和两个下拉列表

Javascript KnockoutJs…ObservableArray和两个下拉列表,javascript,asp.net-mvc-3,knockout.js,Javascript,Asp.net Mvc 3,Knockout.js,假设我有三个这样的对象: var registryEpisode = function() { var self = this; self.registry = ko.observable(new registry()); self.episodeType = ko.observable(new episodeType()); }; var episodeType = function() { var self

假设我有三个这样的对象:

var registryEpisode = function() {
        var self = this;

        self.registry = ko.observable(new registry());
        self.episodeType = ko.observable(new episodeType());
    };

    var episodeType = function() {
        var self = this;
        self.id = ko.observable(""),
        self.name = ko.observable("");
    };
var registry = function() {
    var self = this;

    self.id = ko.observable(""),
    self.name = ko.observable("");
};
    var vm = function() {
    var self = this;
    self.registryEpisodeTypes = ko.observableArray([new registryEpisode()]);

    self.addRegistryEpisodeType = function (episodeType, registry) {
    var regEpisode = new registryEpisode();
    regEpisode.registry = registry;
    regEpisode.episodeType = episodeType;
            self.registryEpisodeTypes.push(regEpisode);

        } .bind(this);
    }
然后我有一个视图模型,如下所示:

var registryEpisode = function() {
        var self = this;

        self.registry = ko.observable(new registry());
        self.episodeType = ko.observable(new episodeType());
    };

    var episodeType = function() {
        var self = this;
        self.id = ko.observable(""),
        self.name = ko.observable("");
    };
var registry = function() {
    var self = this;

    self.id = ko.observable(""),
    self.name = ko.observable("");
};
    var vm = function() {
    var self = this;
    self.registryEpisodeTypes = ko.observableArray([new registryEpisode()]);

    self.addRegistryEpisodeType = function (episodeType, registry) {
    var regEpisode = new registryEpisode();
    regEpisode.registry = registry;
    regEpisode.episodeType = episodeType;
            self.registryEpisodeTypes.push(regEpisode);

        } .bind(this);
    }

我试图将视图模型绑定到一个下拉列表表,并在每次选择注册表和事件类型时更新视图模型,但我需要维护事件类型和注册表之间的关系。想法?

下面是一个简单的链式下拉列表的实现:

var registryception=function(){
var self=这个;
self.registry=ko.observable(新注册表());
self.eposodetype=ko.observable(新的eposodetype());
};
变量epiodeType=函数(id,名称){
var self=这个;
self.id=ko.observable(id),self.name=ko.observable(name);
};
var registry=function(){
var self=这个;
self.id=ko.observable(“”),self.name=ko.observable(“”);
};
var vm=函数(){
var self=这个;
self.selectedRegistry=ko.可观察(“”);
self.registryeposodetypes=ko.observearray([]);
self.addRegistryEpicodeType=函数(EpicodeType,注册表){
var regeposion=新注册表事件();
regeposition.registry=注册表;
regeposion.eposodetype=eposodetype;
self.registryeposodetypes.push(regseption);
}.约束(本);
self.getRegisteries=函数(){
var hashCheck={};
var结果=ko.observableArray([]);
ko.utils.arrayMap(self.RegistryEpiodeTypes(),函数(项){
if(hashCheck[“”+item.registry.id()]==null | | hashCheck[“”+item.registry.id()]==未定义){
hashCheck[“”+item.registry.id()]=item.registry.name();
结果:推({
“名称”:item.registry.name(),
“值”:item.registry.id()
});
}
});
返回结果;
}
self.getSpices=ko.DependentToServable(函数(){
var ret=self.registryEpisodeTypes();
var selectedRegistryItem=self.selectedRegistry();
如果(selectedRegistryItem===null | | selectedRegistryItem===undefined | | selectedRegistryItem=====“”)
返回;
var结果=ko.observableArray([]);
ko.utils.arrayMap(ret,功能(项目){
如果(item.registry.id()=selectedRegistryItem)result.push({
“名称”:item.epiodeType.name(),
“值”:item.epiodeType.id()
});
});
log(ko.toJSON(result));
返回结果;
});
}
var viewModel=new vm();
var breakingBad=新注册表();
breakingBad.id(“1000”);
breakingBad.名称(“breakingBad”);
addRegistryEpisodeType(新的episodeType(“1”,“E1 breakingBad”),breakingBad);
addRegistryEpisodeType(新的episodeType(“2”,“E2 breakingBad”),breakingBad);
addRegistryEpisodeType(新的episodeType(“3”,“E3 breakingBad”),breakingBad);
var trueBlood=新注册表();
trueBlood.id(“1001”);
trueBlood.name(“trueBlood”);
viewModel.addRegistryEpisodeType(新的episodeType(“1”、“E1 TrueBread”)、TrueBread);
addRegistryEpisodeType(新的episodeType(“2”,“E2 TrueBread”),TrueBread);
addRegistryEpisodeType(新的episodeType(“3”,“E3特鲁布拉德”),特鲁布拉德);
应用绑定(视图模型);

我创建了一个名为getSpices的DependentToServable。每当selectedRegistry更改时,将重新计算此eposodeList。

在注册表插曲模型中不需要
新注册表
&
新eposodetype
-您正在创建对象,然后立即替换它们。另外,您在下拉列表中使用了哪些绑定?