从我读到的关于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"