2013-03-05 30 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