在一个数据绑定中应用knockout if和options绑定在一起

时间:2014-09-08 14:13:20

标签: javascript knockout.js

我正在尝试将if语句移动到数据绑定中,但我遇到错误说明:

  

多个绑定(if和options)正试图控制后代   绑定相同的元素。

我要做的是控制下拉列表的可见性,使其不会根据if语句条件出现。我试图使用可见的绑定但它只删除了下拉元素而不是实际的下拉列表。

这就是我目前的尝试:

<select id="IdField" name="Id" data-placeholder="Select an item" data-bind="if: items().length > 0, options: items(), optionsText: 'Name', optionsValue: 'Id', value: DdlSelectedValue, event: { change: selectChanged }">
                </select> 

这是我的原始代码:

 <!-- ko if: items().length > 0 -->
                <select id="IdField" name="Id" data-placeholder="Select an item" data-bind="options: items(), optionsText: 'Name', optionsValue: 'Id', value: DdlSelectedValue, event: { change: selectChanged }">
                </select>
            <!--/ko-->

有没有办法可以将if语句移动到带有选项的数据绑定中?

1 个答案:

答案 0 :(得分:0)

如果您希望在select为零时items().length实际不在页面中,那么您所拥有的是正确的方法。

或者,您可以使用visible,当然稍有不同(当items().length为0时,select将会存在,它只会被隐藏):

<select id="IdField" name="Id" data-placeholder="Select an item" data-bind="visible: items().length > 0, options: items(), optionsText: 'Name', optionsValue: 'Id', value: DdlSelectedValue, event: { change: selectChanged }">
</select>