1

我最近开始学习 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 教程,但我无法理解它们。

谢谢您的帮助!

4

0 回答 0