KnockoutJS - 在applybindings之后更新可观察值

时间:2013-07-16 19:46:52

标签: knockout.js

我需要在创建视图模型后更新可观察的值。此外,我需要直接更新值,以响应来自javascript控件的事件,而不将对象绑定到该observable。我认为这应该很简单,而且我只是错过了正确的语法,但我只是没有得到它。

我创建了一个JSFiddle来说明我正在尝试做什么。 http://jsfiddle.net/toddhd/vwhqU/1/

如果您按下F12并在运行JSFiddle时观察控制台,您将看到捕获的错误。

AppViewModel.firstName('Todd');

尝试以这种方式更新firstname告诉我AppViewModel没有名为“firstName”的函数。

AppViewModel().firstName('Todd');

这种方式告诉我firstName未定义。

我可能需要再次调用Apply Bindings,但我不想仅仅为了更新单个值而这样做。

我错过了什么?

2 个答案:

答案 0 :(得分:7)

您需要更新对象的实例,而不是类的定义。

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

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

答案 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');