Javascript 在一个数据绑定中将淘汰if和选项绑定在一起
我试图将if语句移动到数据绑定中,但遇到一个错误,指出: 多个绑定(if和选项)正在尝试控制子体 同一元素的绑定 我试图做的是控制下拉列表的可见性,这样它就不会基于if语句条件出现。我尝试使用可视绑定,但它只删除了下拉列表元素,而不是实际的下拉列表 这就是我目前正在尝试的:Javascript 在一个数据绑定中将淘汰if和选项绑定在一起,javascript,knockout.js,Javascript,Knockout.js,我试图将if语句移动到数据绑定中,但遇到一个错误,指出: 多个绑定(if和选项)正在尝试控制子体 同一元素的绑定 我试图做的是控制下拉列表的可见性,这样它就不会基于if语句条件出现。我尝试使用可视绑定,但它只删除了下拉列表元素,而不是实际的下拉列表 这就是我目前正在尝试的: <select id="IdField" name="Id" data-placeholder="Select an item" data-bind="if: items().length > 0, option
<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语句移动到带有选项的数据绑定中?如果希望
选择在items()时实际不在页面中,那么您所拥有的方法是正确的。长度
为零
或者,您可以使用visible
,这当然略有不同(当items().length
为0时,select
将在那里,它将被隐藏):
谢谢。。我从中得到的问题是,当我尝试visible时,我仍然在页面上得到一个空的下拉列表,它似乎没有删除实际的下拉列表,只是删除了…?@user3244544:正如我所说的:使用visible
,select
将在DOM中,但在页面上不可见:从用户的角度来看,它根本不在那里。是的,我看到了你在说什么。。。我还注意到,使用visible:items().length>0时,下拉列表最初会正确显示,但当我尝试重用该功能时,除非我刷新页面,否则该下拉列表不会再次显示。@user3244544:不应该这样做,如果项
是可观察的,并且您使用它来添加/删除项,则不会这样做:我想这是我的问题。。我有项目
作为ko.计算
<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>