我希望在我的视图模型之外访问我的数据。所以我创建了一个视图模型对象,但是我无法绑定它的属性。请注意,一切都在我的视图模型中正常工作。
基本上是一个简化的伪代码:
function Users() {
name;
date;
}
function userHealthModel() {
function createUsers() { new Users[] };
}
self.userModel = ko.observable(new userHealthModel());
self.userModel.createUsers();
如果我在模型中调用createUsers
方法,我的绑定工作正常。
这是一个jsFiddle,注意我的问题一直在JS的末尾,我评论它: http://jsfiddle.net/fourgates/jpk22/1/
我是JS和KO的新手。不确定如何使用$ root,$ parent等。请帮助编程爱好者!非常感谢提前!
答案 0 :(得分:10)
如果我明白你要做什么,我仍然不能100%确定,但是这里有一些关于你小提琴代码的想法:
如果您有类似
的内容var self = this;
在全局范围内(=不在函数中),this
指向窗口对象。因此,这没有任何意义。
self.userModel = ko.observable(new userHealthModel());
不需要创建视图模型的可观察对象 - 您不希望整个模型发生变化,对吧?它将永远保持用户模式,而不是突然变成“消息模型”或其他什么。
如果要从外部调用视图模型的方法,只需创建一个实例:
var userModel = new userHealthModel();
userModel.createUsers();
// Use "userModel" to access the methods and properties
// like you're using "self" inside the view model:
userModel.users2()[1].userId(5);
// now apply the binding to THE SAME view model
ko.applyBindings(userModel);
如果这不是你想要的,请告诉我!