Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一个数据绑定中将淘汰if和选项绑定在一起_Javascript_Knockout.js - Fatal编程技术网

Javascript 在一个数据绑定中将淘汰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

我试图将if语句移动到数据绑定中,但遇到一个错误,指出:

多个绑定(if和选项)正在尝试控制子体 同一元素的绑定

我试图做的是控制下拉列表的可见性,这样它就不会基于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语句移动到带有选项的数据绑定中?

如果希望
选择
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>