Knockout.js调用方法在视图模型外
问题描述:
我想让我的数据在我的视图模型之外访问。所以我创建了一个视图模型对象,但我无法绑定它的属性。请注意,我的视图模型中的一切正常工作。Knockout.js调用方法在视图模型外
基本上是一个简化的伪代码:
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等。请帮助编程爱好者!提前谢谢了!
答
我仍然不是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);
如果这不是你要找的人,让我知道!
+0
感谢那正是我想要做的!这是有道理的,该模型是不可观察的。非常感谢你的帮助! – 2012-04-01 17:24:14
请问一个具体的问题,而不是只发布一大堆“不工作”的代码。你已经建立了很多,所以你在哪里挣扎? – Niko 2012-04-01 01:26:42
对不起,请原谅我的懒惰,当我写这篇文章时,我很疲倦,只是小睡了一下。我用jsfiddle重写了我的问题。 但基本上我有我的视图模型以外的viewModel对象的绑定属性的麻烦。 – 2012-04-01 02:45:05