the*_*ain 8 javascript knockout-2.0 knockout.js
我有一个类别下拉列表,它控制子类别下拉列表.如果子类别数组对于所选类别为空,我想隐藏子类别下拉列表.
示例代码如下:
<script>
self.categories = ko.observableArray([
{"name": "top 1", "subcategories":[
{"name": "sub 1"},
{"name": "sub 2"}
]},
{"name": "top 2", "subcategories":[]}
]);
self.selected_category = ko.observable();
self.selected_sub_category = ko.obserable();
</script>
<div>
<select data-bind="options: categories, optionsText: "name", optionsCaption: "Select", value: selected_category"></select>
</div>
<div data-bind="with:selected_category">
<select data-bind="options: subcategories, optionsText: "name", optionsCaption: "Select", value: selected_sub_category"></select>
</div>
Run Code Online (Sandbox Code Playgroud)
nem*_*esv 11
您需要将with绑定与if(或visible)绑定结合起来,您可以在其中指定条件:
<div data-bind="with: selected_category">
<!-- ko if: subcategories.length > 0 -->
<select data-bind="options: subcategories, optionsText: 'name',
optionsCaption: 'Select', value: $parent.selected_sub_category"></select>
<!-- /ko -->
</div>
Run Code Online (Sandbox Code Playgroud)
注意使用$parent中的value: $parent.selected_sub_category,你需要访问"父"对象,因为它with创建了一个子上下文.
如果你不希望使整个div当子集是空的,那么你需要移动with和if外面的div,因为KO不允许同一个元素上使用多个控制流绑定.
那么在这种情况下,您的HTML将如下所示:
<!-- ko with:selected_category -->
<!-- ko if: subcategories.length > 0 -->
<div class="mydiv">
<select data-bind="options: subcategories, optionsText: 'name',
optionsCaption: 'Select',
value: $parent.selected_sub_category">
</select>
</div>
<!-- /ko -->
<!-- /ko -->
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9067 次 |
| 最近记录: |