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



从我读到的关于Knockout 3.2中刚刚添加的组件特性的内容来看,这些示例假设组件的消费者指定了它的类型。

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

背景:

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

data-bind="control: weirdEditor"

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

寻找相似的模式,看起来Durandal有一个非常接近的compose结合:

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

除了(我认为)ui必须是一个路径到一些HTML资源在他们的基于amd的模块系统。我只是使它成为一个HTML字符串,我可以require与适当扩展CommonJS。

的优点是,您可以创建通用容器(两个窗格之间的分隔器、选项卡系统、带有可编辑单元格的网格),这样容器就不知道它作为容器的作用是什么。它可以包含任何内容(内容可以随时替换)。

component绑定支持使用可观察对象作为组件名。

data-bind="component: weirdEditor"

最新更新