我需要在创建视图模型后更新可观察的值。此外,我需要直接更新值,以响应来自javascript控件的事件,而不将对象绑定到该observable。我认为这应该很简单,而且我只是错过了正确的语法,但我只是没有得到它。
我创建了一个JSFiddle来说明我正在尝试做什么。 http://jsfiddle.net/toddhd/vwhqU/1/
如果您按下F12并在运行JSFiddle时观察控制台,您将看到捕获的错误。
AppViewModel.firstName('Todd');
尝试以这种方式更新firstname告诉我AppViewModel没有名为“firstName”的函数。
AppViewModel().firstName('Todd');
这种方式告诉我firstName未定义。
我可能需要再次调用Apply Bindings,但我不想仅仅为了更新单个值而这样做。
我错过了什么?
答案 0 :(得分:7)
您需要更新对象的实例,而不是类的定义。
var avm = new AppViewModel();
ko.applyBindings(avm);
avm.firstName('Todd');
答案 1 :(得分:1)
您需要将viewmodel保存在变量中,并使用此变量更改名字。 我更新了你的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');