我正在尝试编写一些 UI,允许用户通过文本框输入数字或从下拉列表中选择一个选项。
我在http://jsfiddle.net/unklefolk/PNQeR/2/做了一个简化的 jsFiddle
如你看到的:
- 选择“编号”时,您可以在文本框中输入文本。
- 选择“选项”时,您可以从下拉列表中选择两个选项之一
文本框和下拉列表都绑定到ItemValue
. viewModel
尽管代码似乎可以正常工作,但我遇到了错误。如果您在 Chrome 中启动调试窗口,当您更改第一个下拉菜单时,您会收到错误消息:
未捕获的类型错误:对象 0 没有方法 'ItemName'
我相信这发生在ItemText
dependentObservable(又名计算)中。
this.ItemText = ko.dependentObservable(function () {
return _isItemAConstant() === 'true' ? this.ItemValue() : this.ItemValue().ItemName();
}, this);
显然,该ItemName()
函数是在导致错误的数值“0”上调用的。
我该怎么做才能不发生此错误?我将两个控件绑定到同一个可观察对象的设计是一个基本错误吗?