【发布时间】:2014-11-25 21:24:29
【问题描述】:
使用 Knockout 生成模态弹出显示,因此当单击列表中的按钮时,会将所选数据传回输入框。 使用单循环时,一切正常。 按钮单击事件工作正常。 为了更好的外观,我必须创建一个嵌套循环,这可以为每个客户端创建一个表,但现在点击事件已经停止工作...... 工作代码:
<table class="table table-hover table-bordered table-striped table-condensed">
<tbody data-bind="foreach: jobs">
...
<button data-bind="text: Description, attr: { 'data-idx': $index, 'data-code': Code }, click: $parent.selectCode" class="btn btn-block text-left"></button>
脚本:
self.selectCode = function() {
var desc = this.Description;
some more code...
}
我在客户端上添加了一个外部循环,因此我可以为每个客户端分隔表格,不幸的是这对我不起作用(KO 的新功能)。 内部循环正在为每个客户端(按 Id)获取数据。 使用嵌套循环,click 事件当前未触发:
<div data-bind="foreach: clients">
<table class="table table-hover table-bordered table-striped table-condensed">
<tbody data-bind="foreach: $parent.filteredJobs(ClientID)">
...
<button data-bind="text: Description, attr: { 'data-idx': $index, 'data-code': Code }, click: $parent.selectCode" class="btn btn-block text-left"></button>
通过 id 获取客户端的额外脚本(内部循环):
self.filteredJobs = function(clientId) {
return ko.utils.arrayFilter(jobs, function(job) {
return (job.ClientID === clientId);
});
};
我也按照建议here尝试了父索引 $parentContext.$index ,结果没有变化。
【问题讨论】:
标签: knockout-2.0