在KnockoutJS中使用组件和视图模型的共享实例

时间:2015-11-10 21:18:57

标签: knockout.js knockout-components

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

感谢您的帮助!

0 个答案:

没有答案