2012-11-02 26 views
1

我使用KnockoutJS填充Kendo Combox。我正在使用Knockout-Kendo.js來做到這一點。無法啓用Kendo combox box從敲除

http://rniemeyer.github.com/knockout-kendo/web/ComboBox.html

我有2個地址,K1地址和郵寄地址:

兩個地址,如果選擇從狀態組合框中選擇一個國家,然後是國家組合體被dsiabled和美國選擇。

如果您從狀態組合框中刪除狀態,或者如果您手動輸入不存在的狀態,將啓用國家/地區組合框。如果您選擇美國以外的任何國家,則狀態組合框將被禁用。

我得到那個工作爲k1地址。

<input data-bind=" kendoComboBox: { enabled: k1Address.isStateMutable, dataTextField: 'Name', dataValueField: 'Id', data: states, value: k1Address.stateId }" /> 

問題是郵寄地址。還有一個複選框「不同的郵寄地址」,所以我需要檢查兩個條件(啓用:isK1MailDifferfrmAddress & & mailingAddress.isStateMutable)。如果我只是(啓用:isK1MailDifferfrmAddress)或(啓用:mailingAddress.isStateMutable)他們都工作。我不知道爲什麼,當我檢查他們兩個,它不會工作。

<input data-bind=" kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data: states, value: mailingAddress.stateId, enabled: isK1MailDifferfrmAddress && mailingAddress.isStateMutable }" /> 

我上傳了我的代碼到jsFiddle上,你可以在那裏測試它。

http://jsfiddle.net/gatuV/1/

當你運行它

,郵寄地址,國家與國家組合框應該被禁用,但事實並非如此。

回答

3

通常情況下,當您使用涉及observables或computed observables的表達式時,您需要確保您將每個函數調用爲如下函數:myoption: observableA() + computedB()

但是,Kendo綁定實際上確實需要可觀察或直接計算(或靜態值)。所以,你需要有一個代表你啓用的概念的計算。

例如,您可以將您的「不同地址」標誌傳遞給地址構造函數,並將其用作您正在使用的可變計算的一部分。

這裏有一個例子:http://jsfiddle.net/rniemeyer/gatuV/6/

+0

太感謝你了,你救了我的作品小時 – qinking126