Javascript 了解嵌套组件绑定如何在KnockoutJS上工作

Javascript 了解嵌套组件绑定如何在KnockoutJS上工作,javascript,knockout.js,knockout-3.0,Javascript,Knockout.js,Knockout 3.0,我尝试使用敲除组件,我尝试使用的一个组件是嵌套组件,如下所示: <parent-component params="parentText: parentText"> <child-component params="childText: childText"></child-component> </parent-component> parentText和childText都是同一视图模型对象的成员,但运行此操作时,会出现以下错

我尝试使用敲除组件,我尝试使用的一个组件是嵌套组件,如下所示:

<parent-component params="parentText: parentText">
    <child-component params="childText: childText"></child-component>
  </parent-component>

parentText和childText都是同一视图模型对象的成员,但运行此操作时,会出现以下错误:

未捕获引用错误:无法处理绑定“模板:函数(){return{nodes:$componentTemplateNodes}” 消息:未定义childText

这是我正在尝试运行的示例:

var ParentComponent=函数(参数){
var self=这个;
self.parentText=params.parentText;
};
ko.components.register('父组件'{
viewModel:ParentComponent,
模板:'

' }) var ChildComponent=函数(参数){ var self=这个; self.childText=params.text2; }; ko.components.register('子组件'{ viewModel:ChildComponent, 模板:'

' }) var ViewModel=函数(){ var self=这个; self.title='KnockoutJS组件测试'; self.parentText='这是文本1'; self.childText='这是文本2'; }; ko.applyBindings(newviewmodel(),document.getElementById('content')
你做得很好。不过,我在这里看到了两个问题

第一名:

$componentTemplateNodes
在本例中不可见,因为您使用的是敲除3.2,但该版本尚不受支持,因此您最好将库更新为较新版本,敲除3.4已被删除,但
$componentTemplateNodes
支持从3.3开始

秒:

在ChildComponent vm中,您引用了params
text2

self.childText=params.text2

但当您在html绑定中声明它时,它的名称是
childText

还要注意的是,
包含在一个内部组件中,因此这里看不到
childText
,因此您应该将其称为
$root.childText

总而言之: 绑定应该是安全的


和组件vm应为:


self.childText=params.childText

就是这样。我必须使用$root。谢谢