使用Knockout生成模态弹出窗口,因此当单击列表中的按钮时,会将所选数据传回输入框。 使用单循环时,一切正常。 按钮单击事件工作正常。 为了更好的外观,我不得不创建一个嵌套循环,这可以为每个客户端创建一个表,但现在click事件已停止工作... 工作代码:
<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,结果没有变化。
答案 0 :(得分:0)
好的,我找到了解决办法:) 点击事件更改为$ root而不是$ parent ...
click: $root.selectCode