如何在每个表行上放置click事件,并将结果作为参数传递,以将新数据绑定到另一个源
How to place click event on each table row and pass result as argument to bind new data to another source?
我有以下代码,它填充一个select options
,并将所选值传递给视图模型中的另一个函数,该函数用与所选值匹配的数据填充一个表:
简而言之,如果用户从选择选项中选择ASIA,则ASIA中的所有国家都绑定到该表:
Fiddle示例:
如何向表中的每一行添加单击事件,以便将作为参数单击的行的CountryId
传递给View Model
中的另一个函数?我需要使用参数和函数来执行额外的绑定。例如:Country Detail
。
这就是我目前所拥有的:
<div id="country-select">
<select data-bind="options: UniqueContinent,
value: SelectedContinent"></select>
</div>
<table id="country-list">
<tr>
<th>CountryID</th>
<th>Country Name</th>
<th>City</th>
<th>Continent</th>
<th>CountryAbbr</th>
</tr>
<tbody data-bind= "foreach: FilteredEntries">
<tr>
<td data-bind="text: CountryId"></td>
<td data-bind="text: Country"></td>
<td data-bind="text: City"></td>
<td data-bind="text: Continent"></td>
<td data-bind="text: CountryAbbr"></td>
</tr>
</tbody>
</table>
JS代码:
function ViewModel() {
var self = this;
self.CountryData = ko.observableArray([
{
"City": "KABUL",
"Continent": "ASIA",
"Country": "AFGHANISTAN",
"CountryAbbr": "AF",
"CountryId": "102120"
},
{
"City": "DHAKA",
"Continent": "ASIA",
"Country": "BANGLADESH",
"CountryAbbr": "BD",
"CountryId": "102136"
},
{
"City": "BRUSSELS",
"Continent": "EUROPE",
"Country": "BELGIUM",
"CountryAbbr": "BE",
"CountryId": "102139"
},
{
"City": "MINSK",
"Continent": "EUROPE",
"Country": "BELARUS",
"CountryAbbr": "BY",
"CountryId": "102138"
}]);
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();
});
// 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();
});
});
}
ko.applyBindings(new ViewModel)
只需在<tr>
:中添加一个click
处理程序
<tr data-bind="click: $root.CountryDetails">
在你的脚本中:
self.CountryDetails = function(country)
{
doSomethingWithCountryId(country.CountryId);
}
function doSomethingWithCountryId(countryId)
{
// ...
}
请参阅更新的Fiddle和文档
相关文章:
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- JavaScript常量-作为参数传递或直接使用
- 如何将javascript对象作为参数传递到c#web服务中
- 将参数传递给函数
- 如何将Gruntfile.js中的参数传递到webdriverio规范
- javascript,将参数传递给函数内部的闭包中的回调
- Javascript-将包含变量的html字符串作为参数传递
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 在嵌套递归指令中将参数传递给父控制器方法
- each()-将额外的参数传递给回调参数
- 代码气味-将布尔控制参数传递给函数
- 如何将自定义参数传递到FullCalendar事件提要
- 将参数传递给函数,同时保留事件处理程序
- 将图标作为参数传递不会;t工作-谷歌地图
- 如何使用按钮将参数传递给函数
- 如何将多个参数传递给输入's onChange处理程序
- 如何在每个表行上放置click事件,并将结果作为参数传递,以将新数据绑定到另一个源