代码之家  ›  专栏  ›  技术社区  ›  Suraj Nair

如何禁用/启用嵌入到映射到击倒可观察数组的表中的下拉列表

  •  0
  • Suraj Nair  · 技术社区  · 7 年前

    以下是我尝试过但似乎不起作用的方法:

    <tbody data-bind="foreach:studentData">
        <tr>
            <td><span data-bind="text:rollNo"></span></td>
            <td><select class="form-control" data-bind="options:$parent.sexDropDown,optionsText:'name',optionValue:'id',value:sex,optionsCaption:'-Select-'"></select></td>
            <td><select class="form-control" data-bind="options:$parent.uniformTypeDropDown,optionsText:'name',optionValue:'id',value:uniform,enable:sex? (sex.id == 2):false,optionsCaption:'-Select-'"></select></td>
        </tr>
    </tbody>
    

    here

    简单地说,我希望在“性别”下拉列表中选择“女性”选项的情况下,启用每行中的“统一类型”下拉列表,并且需要在所有其他场景中禁用该选项。

    1 回复  |  直到 7 年前
        1
  •  1
  •   user3297291    7 年前

    sex uniform 属性必须是可观察的,以允许双向绑定:

    self.studentData  = ko.observableArray([
      { rollNo: 1, sex: ko.observable(null), uniform: ko.observable(null) }
      //                ^^^^^^^^^^^^^^    ^           ^^^^^^^^^^^^^^    ^
      // This allows the `value` binding to write to the property
    ]);
    

    然后,在你的 enable 绑定时,可以使用实时更新值:

    enable: sex() ? (sex().id === 2) : false
    //         ^^       ^^
    // Because this property is now observable, you need to call it to extract
    // its value
    

    在更新的小提琴中: https://jsfiddle.net/ocd5qvr8/

    推荐文章