我最近开始学习HTML / JS,更具体地说是KnockoutJS。 我正在努力理解的一个概念是组件以及如何处理视图模型。这里是我遇到的一个例子,不确定接近这个的正确方法。
我有一个视图模型,我想扮演一个可重复使用的小部件。我将其称为widget.viewmodel.js。我还有另一个视图模型,即整个页面,所以我将调用该页面.viewmodel.js。当然还有一个小部件的模板,我将其称为widgetTemplate.ko.html。
所以我试图做的是在page.viewmodel.js内部,我想创建一个widget.viewmodel.js,为了保持引用,我计划将订阅者添加到引用处理的引用需要反映在page.viewmodel.js上。
所以对于page.viewmodel.js我有
var widget = new WidgetViewModel(params);
var component = "widget-component";
if(!ko.components.isRegistered(component)){
ko.components.register(component, {viewModel: widget, template: widgetTemplate.ko.html});
}
var container= $("<div/>").attr("data-bind", 'component: {name" + component + '"});
ko.applyBinding(widget, container[0]); //issue here saying that widget is not a view model
this.append(container);
所以这里有一些问题。首先,它不起作用,因为它抱怨它正在期望视图模型的applyBinding。
其次,我完全不确定这里的结构是否有意义。我试图阅读KO教程,但我没理解它们。
感谢您的帮助!