Knockout.js 敲除嵌套的$componentTemplateNodes返回错误的上下文';s节点?
我目前正在开发一个布局引擎,使用knockout作为基础,但是我遇到了一点障碍。(很抱歉邮件太长) 我用的是淘汰赛3.5.1 我有以下index.html:Knockout.js 敲除嵌套的$componentTemplateNodes返回错误的上下文';s节点?,knockout.js,knockout-templating,Knockout.js,Knockout Templating,我目前正在开发一个布局引擎,使用knockout作为基础,但是我遇到了一点障碍。(很抱歉邮件太长) 我用的是淘汰赛3.5.1 我有以下index.html: general dock具有以下.html文件: UIManager.registerDockType函数使用以下参数注册具有敲除功能的驳接: ComponentName:第一个参数是自定义元素的名称,用于向knockout注册 DockClass:第二个参数被实例化并传递给元素 TemplateString:第三个参数是提供给敲
general dock具有以下.html文件:
UIManager.registerDockType函数使用以下参数注册具有敲除功能的驳接:
- ComponentName:第一个参数是自定义元素的名称,用于向knockout注册
- DockClass:第二个参数被实例化并传递给元素
- TemplateString:第三个参数是提供给敲除类的模板字符串
ko.components.register(ComponentName{
模板:TemplateString,
视图模型:{
createViewModel:(参数,组件信息)=>{
如果(!componentInfo){
抛出新错误(“组件未正确初始化”);
}
var context=ko.contextFor(componentInfo.element);
新的DockClass(componentInfo.element);
返回上下文。$data;
}
}
})
这就是所谓的:
UIManager.registerDockType(“垂直停靠”,垂直停靠,”);
UIManager.registerDockType(“水平dock”,HorizontalDock,”);
registerDockType(“内容驳接”,CenterDock,”);
我希望输出以下HTML:
但我得到的是:
为什么会发生这种情况?为什么在水平坞中我得到了总布局的$componentTemplateNodes 当我使用knockout 3.4.0并突出显示
但是,一旦我们到达水平dock
,当knockout扩展常规dock时,它将创建一个新的$componentTemplateNodes值(因为它有子节点),其中包含以下表示形式:
我认为返回原始$componentTemplateNodes的唯一方法是向上递归$parentContext,或者将它们作为参数传递
这是虫子还是我在做傻事