【问题标题】:Subscribe to select item from foreach loop订阅以从 foreach 循环中选择项目
【发布时间】:2013-05-30 06:08:09
【问题描述】:

我正在使用 foreach 绑定来生成一个表,并且在每一行中都有一个下拉列表。根据他们的选择,我需要显示其他列。我遇到的问题是我需要订阅这个下拉列表,让我知道表头需要显示额外的列标题。

如何订阅从 foreach 对象循环生成的选择列表?

【问题讨论】:

  • 选择列表本身必须绑定到一个 Knockout observable。
  • 选择列表是一个对象内部的ko observableArray。我需要订阅我的对象的 foreach 循环中的选择列表。

标签: knockout.js


【解决方案1】:

这是我拼凑起来的一个 jsfiddle,向您展示它是如何工作的:

http://jsfiddle.net/vzkaY/5/

您可以使用 ko.computeds 来确定该行中其他单元格处于什么状态,如果它们有效,则让下一个单元格可见

self.col3data.active = ko.computed(function () {
    if (self.col2data() === "item B")
        return true;
    return false;
}, self);

在标记中

<td><select data-bind="options: col2items, value: col2data"></select></td>
<td><select data-bind="visible: col3data.active, options: col3items, value: col3data"></select></td>

我认为您可能希望显示所有标题,而不管是否有任何行应显示该列的单元格数据。原因是,如果一行的所有列都可见,并且您更改另一行中的某些值以“隐藏”列标题,那么您将影响其他行。如果所有行都未处于正确状态以显示该列,则可以折叠标题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多