Knockout JS:设置下拉值?

时间:2014-10-10 09:32:24

标签: knockout.js

我在我的项目中集成了淘汰赛js,现在我在设置用户选择的值到Dropdown时面临一些问题,

以下代码:

<select id="regDobMonth" data-bind="options: RDOBM, optionsText: 'name', selectedOptions: selRDOBM" name="" class="date-sel month" tabindex="3"></select>

JS文件:

RDOBY: ko.observableArray([{ name: "1986" }, { name: "1987" }, { name: "1988" }, { name: "1989" }, { name: "1990" }, { name: "1991" }, { name: "1992" }, { name: "1993" }, { name: "1994" }, { name: "1995" }, { name: "1996" }, { name: "1997" }, { name: "1998" }, { name: "1999" }, { name: "2000" }, { name: "2001" }]);

我可以将这些数据加载到下拉列表,并能够使用

选择所选值
selRDOBY().name

但我的问题是我想将此值设置回下拉列表。

例如:从后端系统我收到2010年作为选定年份,然后我需要将此值设置为此下拉列表。

如何做到这一点。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

此处的问题似乎是selRDOBYobservable而不是常规数组或observableArray。 KnockoutJS关于selectedOptions binding的文档(您用来设置所选值)说明:

  

这应该是一个数组(或一个可观察的数组)。 KO设置元素的选定选项以匹配数组的内容。任何先前的选择状态都将被覆盖。

     

如果您的参数是一个可观察的数组,那么绑定将在数组更改时更新元素的选择(例如,通过push,pop或其他可观察的数组方法)。如果参数不可观察,它只会设置元素的选择状态一次,以后不会再次更新。

     

参数是否是可观察数组,KO将检测用户何时选择或取消选择多选列表中的项目,并将更新数组以匹配。这是您可以阅读选择哪个选项的方法。

因此,您需要将selRDOBY重新声明为observableArray

selRDOBY: ko.observableArray([]);

您需要修改现有代码以确保重新检索此更改。因此,selRDOBY(value)的任何实例都可能需要更改为selRDOBY([value])selRDOBY.push(value)