【问题标题】:Knockout.js 2.3 Nested loop, click event has stopped workingKnockout.js 2.3 嵌套循环,点击事件已停止工作
【发布时间】: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


    【解决方案1】:

    好的,我找到了解决方案 :) 点击事件改为 $root 而不是 $parent...

    click: $root.selectCode
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 2016-04-28
      相关资源
      最近更新 更多