【问题标题】:KnockoutJs binding list option selects with option groupsKnockoutJs 绑定列表选项选择与选项组
【发布时间】:2023-03-12 06:19:01
【问题描述】:

我正在尝试将 select 与 optgroup 类似的问题绑定

KnockoutJS - Binding value of select with optgroup and javascript objects

不同之处在于页面上可能有一个或多个选择。所以我有这样的东西。

<script>

var services = ko.observableArray([
    { serviceId: 1 }, { serviceId: 2 }
]);

var servicesList = ko.observableArray([
    { Name: "Group 1", Services: [
        { Id: 1, Name: "One" },
        { Id: 2, Name: "Two" }
    ]},
    { Name: "Group 2", Services: [
        { Id: 3, Name: "Three" }
    ]}
]);

</script>

<div class="form-group" data-bind="foreach: services">
    <label for="ServiceId" class="control-label col-md-2">Service</label>
    <div class="col-md-10">
        <select id="ServiceId" name="ServiceId" class="form-control" data-bind="foreach: servicesList, value: serviceId">
            <optgroup data-bind="attr: {label: Name}, foreach: Services">
                <option data-bind="text: Name, option: Id"></option>
            </optgroup>
        </select>
    </div>
</div>

问题是没有选择每个选择的值。

【问题讨论】:

    标签: javascript knockout.js knockout-2.0


    【解决方案1】:

    serviceId 用作 selectList 中的值,因此它应该是可观察的,并且 servicesList 应该与父上下文一起使用。

        //make observable to keep track selected value
        self.services = ko.observableArray([{
           serviceId: ko.observable(1)
         }, {
          serviceId: ko.observable(2)
        }]);
    
    
        //$parent.servicesList
        <select id="ServiceId" name="ServiceId" class="form-control" data-bind="foreach: $parent.servicesList, value: serviceId">
            <optgroup data-bind="attr: {label: Name}, foreach: Services">
                <option data-bind="text: Name,value:Id, option: Id"></option>
            </optgroup>
        </select>
    

    Fiddle Demo

    【讨论】:

    • 这个小提琴演示不能按预期工作。列表中的第二个服务应该显示“二”时显示“一”。
    • 对不起,这是我的错误。您需要在选项中提供值绑定,然后它将按预期工作。查看更新的小提琴。
    • 谢谢,你的传奇。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2013-12-14
    • 2012-05-19
    • 2012-11-30
    • 1970-01-01
    相关资源
    最近更新 更多