ユーザーがテキストボックスを介して数値を入力するか、ドロップダウンからオプションを選択できるようにするUIを少し書き込もうとしています。
http://jsfiddle.net/unklefolk/PNQeR/2/で単純化された jsFiddle を作成しました。
ご覧のように:
- 「The number」を選択すると、テキストボックスにテキストを入力できます。
- 「オプション」を選択すると、ドロップダウンから 2 つのオプションのいずれかを選択できます。
テキストボックスとドロップダウンは両方ItemValue
とも、 の item のプロパティにバインドされていますviewModel
。コードは機能しているように見えますが、エラーが発生しています。Chrome でデバッグ ウィンドウを起動し、最初のドロップダウンを変更すると、次のエラーが表示されます。
キャッチされていない TypeError: オブジェクト 0 にはメソッド 'ItemName' がありません
これは、ItemText
dependentObservable (別名計算) で発生していると思います。
this.ItemText = ko.dependentObservable(function () {
return _isItemAConstant() === 'true' ? this.ItemValue() : this.ItemValue().ItemName();
}, this);
明らかに、ItemName()
関数が数値「0」で呼び出されており、エラーが発生しています。
このエラーが発生しないようにするにはどうすればよいですか? 2 つのコントロールを同じオブザーバブルにバインドする私の設計は根本的なエラーですか?