无法从击倒中启用剑道组合框

时间:2012-11-02 22:28:53

标签: knockout.js knockout-2.0 kendo-ui

我使用KnockoutJS填充了Kendo Combox。我正在使用Knockout-Kendo.js来做到这一点。

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&amp;&amp; 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/

当你运行它时,应该禁用邮件地址的州和国家组合框,但它们不是。

1 个答案:

答案 0 :(得分:3)

通常,当您使用涉及可观察对象或计算可观察对象的表达式时,您需要确保将每个作为函数调用,如:myoption: observableA() + computedB()

然而,Kendo绑定实际上确实需要可观察或直接计算(或静态值)。因此,您需要一个代表您启用概念的计算器。

例如,您可以将“不同地址”标志传递给地址构造函数,并将其用作您正在使用的可变计算机的一部分。

以下是一个示例:http://jsfiddle.net/rniemeyer/gatuV/6/