我最近开始学习 HTML/JS,更具体地说是 KnockoutJS。我正在努力理解的概念之一是组件以及如何处理视图模型。这是我遇到的一个例子,并且不确定处理这个问题的正确方法。
我有一个视图模型,我想像一个可重用的小部件一样工作。我将其命名为 widget.viewmodel.js。我还有另一个视图模型,它是整个页面,所以我将其命名为 page.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 教程,但我无法理解它们。
谢谢您的帮助!