knockout.js组件可以多态处理吗?

时间:2014-08-20 08:53:50

标签: knockout.js components

根据我对the components feature just added in Knockout 3.2所读到的内容,这些示例假定组件的使用者指定它是什么类型。

消费者是否有某种方式可以说"组件来到这里"没有指定类型,并且组件的标识被封装在消费者视图模型的属性中?

背景

我有一个控件绑定我一直在使用:

data-bind="control: weirdEditor"

weirdEditor observable属性必须包含一个带有ui字符串属性的对象,该属性包含其视图的HTML。对象本身就是视图模型。 control绑定将它们绑定在一起,并将生成的自包含UI组件插入到包含元素中。

寻找类似的模式,看起来Durandal的compose绑定非常接近:

data-bind="compose: { model: wierdEditor, view: wierdEditor().ui() }

除了(我认为)ui必须是基于AMD的模块系统中某些HTML资源的路径。我只是将它变为HTML字符串,我可以require使用适当扩展的CommonJS。

优点是您可以创建通用容器(两个窗格之间的拆分器,一个选项卡系统,一个带有可编辑单元格的网格),这样容器就不会意识到它作为容器的作用。它可以包含任何内容(并且可以随时替换内容)。

1 个答案:

答案 0 :(得分:1)

component绑定支持using an observable for the component name

data-bind="component: weirdEditor"