6

ビュー モデルを作成した後、監視可能な値を更新する必要があります。さらに、オブジェクトをオブザーバブルにバインドせずに、JavaScript コントロールからのイベントに応答して値を直接更新する必要があります。これは本当に簡単なはずで、どういうわけか正しい構文が欠けているだけだと思いますが、それがわかりません。

私がやろうとしていることを説明するために JSFiddle を作成しました。 http://jsfiddle.net/toddhd/vwhqU/1/

JSFiddle の実行中に F12 を押してコンソールを監視すると、エラーがキャッチされていることがわかります。

AppViewModel.firstName('Todd');

この方法で firstname を更新しようとすると、AppViewModel には「firstName」という関数がないことがわかります。

AppViewModel().firstName('Todd');

このようにして、firstName が未定義であることがわかります。

Apply Bindings をもう一度呼び出す必要があるかもしれませんが、単一の値を更新するためだけにそれを実行したくはありません。

私は何が欠けていますか?

4

2 に答える 2

7

クラスの定義ではなく、オブジェクトのインスタンスを更新する必要があります。

var avm = new AppViewModel();
ko.applyBindings(avm);
avm.firstName('Todd');

http://jsfiddle.net/paulprogrammer/vwhqU/2/

于 2013-07-16T19:49:00.833 に答える
1

ビューモデルを変数に保存し、この変数を使用して名を変更する必要があります。あなたの jsfiddle を更新しました: http://jsfiddle.net/vwhqU/3/

var vm = new AppViewModel();
ko.applyBindings(vm);

//I need to update first name directly later on, without a binding, in response to an event
vm.firstName('Todd');
于 2013-07-16T19:50:12.890 に答える