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
-您正在创建对象,然后立即替换它们。另外,您在下拉列表中使用了哪些绑定?