2013-03-05 59 views
0

我有2个下拉菜单,但不会有任何关系。我想隐藏或禁用第二个下拉列表中的元素,具体取决于第一个下拉列表的选择。级联下拉互不相关

这里是小提琴link在哪里你可以看到当我选择在一个下拉菜单中显示其他下拉列表中的相关汽车。 在拨弄你可以看到,数据的声明如下

filters: ["None", "Old", "New", "Super"], 
items: [{ name: "Corvette", type: "Old"}, 
     { name: "Charger", type: "Old"}, 
     { name: "Prius", type: "New"}, 
     { name: "Magnum", type: "New"}, 
     { name: "McLaren", type: "Super"}, 
     { name: "Saleen", type: "Super"}] 

你会看到有这样的两个数组之间的关系。但是,在我的实际情况会有互相类似下面

// Mydata will be like 
filters: ["None", "Old", "New", "Super"], 
items: [{ name: "Corvette", type: "Old"}, 
     { name: "Charger"}, 
     { name: "Prius"}, 
     { name: "Magnum"}, 
     { name: "McLaren"}, 
     { name: "Saleen"}] 

我怎样才能达致这在淘汰赛没有关系?

+1

所以,项目没有'type'会被认为是'New'或'None'? – 2013-03-05 14:26:57

+0

@RPNiemeyer很高兴见到你。我没有理解你的问题 – DevelopmentIsMyPassion 2013-03-05 14:55:54

+0

@RPNiemeyer如果用户选择无,则显示所有的名字,但如果他选择的不是None,那么只显示第一个4即Charger,Prius,Magnum和McLaren – DevelopmentIsMyPassion 2013-03-05 15:05:31

回答

1

如果我理解正确的话,那么你就只是想改变你的filteredItems计算的,因此它与您的阵列像做了slice

self.filteredItems = ko.computed(function() { 
    var filter = self.filter(); 
    if (!filter || filter == "None") { 
     return self.items(); 
    } else { 
     return self.items.slice(0, 4); 
    } 
}); 

样品:http://jsfiddle.net/rniemeyer/3y4YP/

+0

这行是什么返回self.items.slice(0,4);做? – DevelopmentIsMyPassion 2013-03-11 14:18:49

+0

我不需要任何硬编码的值。它可以变化 – DevelopmentIsMyPassion 2013-03-11 14:19:13

+0

切片从开始到结束索引返回数组的一部分。每次你的过滤器改变时,这个计算就会运行。 – 2013-03-11 14:43:34