1

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

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

我有 2 个地址,k1 地址和邮寄地址:

对于这两个地址,如果您从州组合框中选择一个州,则国家组合将被禁用并选择美国。

如果您从州组合框中删除州或手动输入不存在的州,则将启用国家组合框。如果您选择美国以外的任何国家,则州组合框将被禁用。

我得到了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/

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

4

1 回答 1

3

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

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

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

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

于 2012-11-03T01:51:28.157 回答