如何使用foreach绑定将select选项中的参数传递给触发器和筛选数组可观测值
How to pass an argument from select options to trigger and filter array observables using foreach binding
在下面的标记中,我绑定了包含大陆列表的唯一数据:我还订阅了所选值,并与用户选择的大陆触发了一个事件。
<div id="country-collection">
<select data-bind="options: UniqueContinent,
value: SelectedContinent"></select>
</div>
代码:
self.CountryData = ko.observableArray([]);
self.SelectedContinent = ko.observable('');
self.UniqueContinent = ko.dependentObservable(function() {
var continent = ko.utils.arrayMap(self.CountryData(),
function(item){
return item.Continent
})
return ko.utils.arrayGetDistinctValues(continent).sort();
});
每次进行选择时都会触发以下功能:
self.SelectedContinent.subscribe(function (selectedValue) {
// alert(selectedValue);
});
使用上面的代码,我需要在以下列表中填充基于默认大陆onload
或选定大陆的所有国家:因此,如果选择了亚洲,则显示的唯一国家是亚洲国家及其各自的详细信息。
<div id="country-list">
<ul data-bind= "foreach: CountryData">
<li><span data-bind="text: Country"></span></li>
// More list stuff here (removed for brevity)
</ul>
</div>
我试过了,但只有当值被硬编码时,它才有效。我需要根据默认值或选择选项的选定值加载国家:
self.SelectedContinent.subscribe(function (selectedValue) {
// Call this function when changes are made
self.FilteredEntries = ko.computed(function() {
return ko.utils.arrayFilter(self.CountryData(), function(item) {
// I need to use the selected value
return item.Continent === 'SOUTH AMERICA';
});
});
});
您可以删除订阅函数:
// Call this function when changes are made
self.FilteredEntries = ko.computed(function() {
return ko.utils.arrayFilter(self.CountryData(), function(item) {
// I need to use the selected value
return item.Continent === self.SelectedContinent();
});
});
使用subscribe,每次选择更改时都会创建一个新的计算可观测值,并且重新分配的计算可观察值从未绑定到DOM。
你可以看看这个小提琴的工作演示。
您可以使用awsome Knockout Projections插件,在这里提供;淘汰预测。
定义过滤后的可观察阵列非常简单,并且实现非常高效:
var FilteredCountries = self.CountryData().filter(
function(c) { return c.Continent === self.SelectedContinent();
});
相关文章:
- 悬停功能触发器
- 使用AngularJS中的筛选器更新给定的表
- 淘汰搜索/筛选
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- Angular JS Filter-通过3个复选框进行筛选
- 使用下拉列表筛选列表(ul>li)
- jQuery触发器点击未从AJAX成功工作
- 为什么会返回触发器('点击')
- JQuery DataTable列筛选器-选择下拉筛选器
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- Regex,用于从字符串中筛选关键字
- 使用多个条件筛选ng个重复
- 在筛选网格期间,网格负载掩码不起作用
- 接下来选择与筛选器匹配的选项
- 可以't从AJAX请求中筛选数据
- jQuery自动完成触发器在选择时返回
- 如何从另一个带下划线的数组中筛选带元素的数组
- 动态更改Webkit筛选器值
- 如何筛选对象的数组属性
- 如何使用foreach绑定将select选项中的参数传递给触发器和筛选数组可观测值