【问题标题】:Knockout -how to transfer multiselect listbox items(any orde selected items) to another listbox using Knockout?淘汰赛 - 如何使用淘汰赛将多选列表框项目(任何订单选定项目)传输到另一个列表框?
【发布时间】:2013-07-28 04:38:12
【问题描述】:

我有两个多选列表视图(dropdownList multiple),当用户在第一个列表中选择一个选项时,自动插入/转移到第二个多选列表(dropdownList),并从第一个多选列表中删除该选项。

<label>Selectable Services</label>
<select class="span12" id="selectService" data-bind="foreach: groups, value: selectedOption" Multiple="Multiple" height="10">
    <optgroup data-bind="attr: { label: label }, foreach: children">
        <option data-bind="text: label, option: $data"></option>
    </optgroup>
</select>
<label>Selected Services</label>
<select class="span12" id="selectedService" multiple="multiple" height="5" data-bind="options: allServices, selectedOptions: selectedServices"></select>

【问题讨论】:

    标签: knockout.js knockout-2.0 knockout-mvc


    【解决方案1】:

    只需使用两个 observableArrays 即可获得两个选择的可用选项。从一个 .remove(item) 和 .push(item) 到另一个。淘汰赛将跟踪更改。尝试事件或单击绑定。或者把这个函数放在计算的 observable 中观察选定的项目。

    您没有制作示例 jsfiddle 来帮助您提供更多示例。

    【讨论】:

    • 我正在尝试实现相同的功能。我的 JSFiddle:jsfiddle.net/yfxKV。问题是当我点击可用列表时,[Object object] 被添加到 Selected 列表中,并且所选项目没有从可用列表中删除。
    • 那是因为 click$data 绑定为函数参数,当您将其绑定到 select 时,$data 是整个视图模型,而不是单个项目(因此没有匹配的项目添加/删除)。检查一下:jsfiddle.net/yfxKV/8 现在每个&lt;option&gt; 都有自己的click 绑定,因此每个数组项都作为参数传递。
    • 小提琴中缺少一些标签。你应该检查一下。除此之外我无能为力,我没有 IE。
    • 我认为这是 JSFiddle 的常见问题。好像不兼容IE8。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多