我有一个如下定义的Knockout视图模型:
function viewModel () {
var self = this;
self.myName = ko.observable();
self.myValue = ko.observable("10");
};
现在我需要在点击链接时更改视图模型的值,如下所示:
$('a.treeitem').live("click", function (e) {
e.preventDefault();
viewModel.myValue("20"); // this line does not work
});
但是,我无法找到设置值的正确方法,Chrome控制台会显示以下消息: 未捕获TypeError:对象函数viewModel(){...}没有方法'myValue'
答案 0 :(得分:23)
您可以将视图模型另存为如下变量:
window.vm = new viewModel();
ko.applyBindings(vm);
$('a.treeitem').live("click", function (e) {
e.preventDefault();
window.vm.myValue("20");
});
每当您从window.vm
读取时,您将从viewModel对象的实际实例中读取
答案 1 :(得分:2)
实际上,我想要做的就是在视图模型定义中完成,所以我可以将我的代码更改为:
function viewModel () {
var self = this;
self.myName = ko.observable();
self.myValue = ko.observable("10");
$('a.treeitem').live("click", function (e) {
e.preventDefault();
self.myValue("20");
});
};
现在一切正常。有时,正确的方式真正是一个简单的方法。