KnockoutJS data-bind =“Visible:”有两个条件不起作用

时间:2016-11-01 07:10:15

标签: javascript jquery knockout.js

我正在尝试使用KnockoutJS进行锻炼。

我有两个dropdowns和一个textbox

我需要什么

如果同时选择了两个下拉菜单,那么只有我应该显示复选框。否则,文本输入不应该可见。

我尝试了什么:

这是我的小提琴:https://jsfiddle.net/vikash208/z4x5meua/13/

我使用过这样的东西:

data-bind="visible: selectedValue && selectedControl"

从上面可以看出,条件如下:

IF selectedValue IS TRUE AND selectedControl IS NOT UNDEFINED

请向我提供一个解决方案以及我在哪里出错。我是knockoutJS

的初学者

1 个答案:

答案 0 :(得分:14)

在绑定中使用多个条件时,需要打开observable以便可以计算整个表达式。

要做到这一点,只需在observable之后添加括号:

<input type="text" class="form-control" data-bind="visible: selectedValue() && selectedControl()" />

JSFiddle

您还可以使用其中的条件创建另一个计算的observable(注意,您仍然在计算的observable中打开observable)。这可能是更好的选择,因为它将逻辑保留在视图模型中并且可以重复使用。

Txt.showCondition = ko.computed(function() {
    return this.selectedItem() && this.selectedValue()
}, this);

然后只需将输入绑定到此:

<input type="text" class="form-control" data-bind="visible: showCondition" />

JSFiddle