2013-04-25 151 views
0

我有2个下拉列表。当我从一个下拉列表中选择值时,它会根据选择的内容在另一个下拉列表中加载值。从另一个下拉列表中选择值时从下拉列表中加载所选值

这里是我的html代码

<select data-bind="options: filters, value: filter"></select> 

<select data-bind="options: filteredItems, optionsText: 'name'"></select> 

这里是我的淘汰赛代码

var ViewModel = function(data) { 
var self = this; 
self.filters = ko.observableArray(data.filters); 
self.filter = ko.observable(''); 
self.items = ko.observableArray(data.items); 
self.filteredItems = ko.computed(function() { 
    var filter = self.filter(); 
    if (!filter || filter == "None") { 
     return self.items.slice(0, 6); 
    } else { 
     return self.items.slice(2); 
    } 
    }); 
}; 


    var initialData = { 
    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"}] 


    ko.applyBindings(new ViewModel(initialData)); 

当我选择类型为无则选择所有的汽车,如果我选择无以外的类型,那么它应该只选择“充电器”和“Magnum”

这是链接到fiddle

+0

很好,小提琴似乎根据你想要的东西的工作,不是吗? – Jalayn 2013-04-25 17:30:22

+0

@Jalayn y小提琴加载前2个值,当我选择类型非无 – DevelopmentIsMyPassion 2013-04-25 17:52:25

+0

与我的更新它是否适合你? – Jalayn 2013-04-25 18:10:15

回答

1

首先,如果你想返回所有项目,只需返回self.items(),这个片就不需要了。 如果你想返回的项目相匹配的过滤器,这应该工作:

self.filteredItems = ko.computed(function() { 
    var myFilter = self.filter(); 
    if (!myFilter || myFilter == "None") { 
     return self.items(); 
    } else { 
     var tempArray = []; 
     for(i=0; i<self.items().length; i++) { 
      if(self.items()[i].type == myFilter) { 
       tempArray.push(self.items()[i]); 
      } 
     } 
     return tempArray; 
    } 
}); 

检查工作fiddle


如果你只需要选择“充电”和“梦龙”这里有云:

self.filteredItems = ko.computed(function() { 
    var myFilter = self.filter(); 
    if (!myFilter || myFilter == "None") { 
     return self.items(); 
    } else { 
     return [ self.items()[1], self.items()[3] ]; 
    } 
}); 
+0

它应该只选择“Charger”和“Magnum”,现在它选择之前工作的前两个。 – DevelopmentIsMyPassion 2013-04-25 18:11:01

+0

ok,检查第二个功能,这个应该做你想做的。我更新了小提琴:http://jsfiddle.net/bx6TN/8/ – Jalayn 2013-04-25 18:15:20

+0

是的,这就是我想要的。由于一吨。 – DevelopmentIsMyPassion 2013-04-25 18:33:10

相关问题