我试图创建我的ViewModels所以常用的方法可应用于各种无需专业知识加时赛视图模型对象的通用容器。 容器和包含的对象应该是这样的:
var containedViewModel = function() {
var self = this;
self.id = ko.observable();
...
self.doSomething = function() {
alert('here');
};
}
var ContainerModel = function(cRoot, cModel, cName) {
var self = this;
self.rootModel = cRoot; // Root view model
self.viewName = cName; // viewModel container name
self.refModel = cModel; // viewModel reference
self.viewModel = ko.observable(); // Single view model
self.viewModels = ko.observableArray(); // Array of view models
self.init = function(rootModel) {
self.viewModel = new self.refModel();
}
self.doSomething = function() {
self.rootModel.doSomeThing(); // This works
self.refModel.doSomeThing(); // This does not work
self.viewModel.doSomeThing(); // This does not work as well
}
}
和容器将通过类似的调用创建:
var ParnentModel = function() {
var self = this;
self.id = ko.observable();
...
self.container = new ContainerModel(self, containedViewModel, 'modelName');
...
self.doSomething = function() {
alert('here');
};
};
在这个例子中,因为在创建实际视图模型,并传递到容器中的rootModel功能接入工作正常。 使用“新self.refModel()”和“self.rootModel.doSomeThing()”按预期工作。 当我尝试使用“self.viewModel.doSomeThing();” 淘汰赛抱怨说,它是不是一个函数。
是否有可能参照视图模型访问的ViewModels功能。
任何帮助,将不胜感激。