Knockout JS输出基于所选的<select>选项</select> <table> </table>

时间:2014-04-18 10:36:45

标签: javascript jquery knockout.js knockout-2.0

是否可以将表的列绑定到<select>元素中的选定选项?我的应用程序目前的工作方式如下:

<select>#1的所选选项定义了应在<select>#2中显示的选项。应用程序的这一部分是完全动态的,并且正在按预期工作。

我现在要做的是将表格内的列绑定到<select>#2中选择的选项。

默认情况下,表格中有5列:2014年,2015年,2016年,2017年,2018年,我需要这些列绑定到<select>#2。如果选择2016年,则表中仅显示2016年,2017年,2018年。如果选择2018,那么表中只应显示2018等。

我猜这可能会使用淘汰赛,但我不太清楚如何处理这个问题。

注意:这完全是关于显示/隐藏表列。在表格的单元格内部是绑定的数值,当其中一个单元格内的值发生变化时,这些数值会相互实时相乘。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

<select data-bind='options: availableYears, value: selectedYear'></select>
...
<td data-bind="visible: isYearAfter(2014, selectedYear)">2014</td>
<td data-bind="visible: isYearAfter(2015, selectedYear)">2015</td>
...

var viewmodel = {
    selectedYear: ko.observable(2014),
    availableYears: ko.observableArray([2014, 2015, 2016, 2017, 2018]),
    isYearAfter: function (year, referenceYear) {
        return referenceYear() < year;
    }
};

此处示例: http://jsfiddle.net/nyothecat/dP9Uu/1/