订阅从foreach循环中选择项目

时间:2013-05-29 21:33:35

标签: knockout.js

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

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

1 个答案:

答案 0 :(得分:0)

这是一个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>

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