我在我的项目中集成了淘汰赛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年作为选定年份,然后我需要将此值设置为此下拉列表。
如何做到这一点。任何帮助表示赞赏。
答案 0 :(得分:0)
此处的问题似乎是selRDOBY
是observable
而不是常规数组或observableArray
。 KnockoutJS关于selectedOptions
binding的文档(您用来设置所选值)说明:
这应该是一个数组(或一个可观察的数组)。 KO设置元素的选定选项以匹配数组的内容。任何先前的选择状态都将被覆盖。
如果您的参数是一个可观察的数组,那么绑定将在数组更改时更新元素的选择(例如,通过push,pop或其他可观察的数组方法)。如果参数不可观察,它只会设置元素的选择状态一次,以后不会再次更新。
参数是否是可观察数组,KO将检测用户何时选择或取消选择多选列表中的项目,并将更新数组以匹配。这是您可以阅读选择哪个选项的方法。
因此,您需要将selRDOBY
重新声明为observableArray
。
selRDOBY: ko.observableArray([]);
您需要修改现有代码以确保重新检索此更改。因此,selRDOBY(value)
的任何实例都可能需要更改为selRDOBY([value])
或selRDOBY.push(value)
。