2016-11-01 19 views
2

一個簡單的事情,我試圖用KnockoutJS來鍛鍊。KnockoutJS data-bind =「可見:」有兩個條件不起作用

我有兩個dropdownstextbox

我需要什麼

如果同時選擇了下拉菜單,那麼只有我應該得到顯示該複選框。否則,文本輸入應該不可見。

我試了一下:

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

我以前是這樣的:

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

從上面的條件已被驗證如下:

IF selectedValue IS TRUE AND selectedControl IS NOT UNDEFINED 

請給我一個解決方案,也是我出錯的地方。我是初學者knockoutJS

回答

6

當您在綁定中使用多個條件時,您需要展開observables,以便可以評估整個表達式。

要做到這一點,只是觀察到後加上括號:

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

JSFiddle

你也可以創建另一個計算觀察到與你的條件是(注意,你解開的計算的觀觀察到的)。這可能是更好的選擇,因爲它可以保持視圖模型中的邏輯並可以重用。

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

然後,只需輸入綁定到這個代替:

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

JSFiddle

+0

感謝您的小提琴,還特別爲你的解釋。 – Vikash

+0

@Vikash我已經更新了另一個選項,這可能在可重用性方面更好。 – Steve

+0

非常感謝。這對我很有幫助。 – Vikash