6

创建视图模型后,我需要更新一个可观察值。此外,我需要直接更新值,以响应来自 javascript 控件的事件,而无需将对象绑定到该 observable。我认为这应该很容易,而且我只是以某种方式错过了正确的语法,但我就是不明白。

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

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

AppViewModel.firstName('Todd');

尝试以这种方式更新名字告诉我 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 回答