Knockoutjs:填充下拉列表

时间:2014-11-22 16:33:47

标签: javascript html asp.net knockout.js

我有以下下拉列表,其中选择多个属性,我需要将它们转换为正常的下拉列表,保持其功能:

由此:

enter image description here

对此:

enter image description here enter image description here

以下是带有绑定的选择下拉列表:

<select data-bind="click: $root.divisionddupdate, foreach: Products, updateDDPlugin: true" id="divisiondd" multiple="multiple" >
    <option data-bind="value: ID, text: Name"></option>
</select
<select data-bind="click: $root.companiesddupdate, foreach: Partners, updateDDPlugin: true" id="companiesdd" multiple="multiple">
    <option data-bind="value: ID, text: Name"></option>
</select>

下拉菜单最初是从foreach填充的,当点击一个选项时,另一个下拉列表会相应填充。

我删除了&#34;多个&#34;属性,但是:

问:如何修改我的代码,以便我可以将第一个选项设置为&#34;选择&#34; (即使在更新后)并且可以在选项更改时更新其他下拉列表中的选项,而不是选项单击?

1 个答案:

答案 0 :(得分:2)

使用options绑定,以及它的用途。请务必设置optionsCaptionoptionsTextoptionsValue以及value绑定。

它将作为选择下拉列表进行渲染,并设置初始Select选项,并显示每个产品的Name属性。它将使用ID属性设置为选定值SelectedProduct

<select data-bind="options: Products,
                   optionsCaption: 'Select',
                   optionsText: 'Name',
                   optionsValue: 'ID',
                   value: SelectedProduct">
</select>
<select data-bind="options: Partners,
                   optionsCaption: 'Select',
                   optionsText: 'Name',
                   optionsValue: 'ID'
                   value: SelectedPartner">
</select>

如果您需要级联下拉菜单,请让Partners依赖于SelectedProduct并通过dependent (computed) observable过滤您的选项。