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中,您引用了paramstext2
self.childText=params.text2代码>
但当您在html绑定中声明它时,它的名称是childText
还要注意的是,
包含在一个内部组件中,因此这里看不到childText
,因此您应该将其称为$root.childText
总而言之:
绑定应该是安全的
和组件vm应为:
self.childText=params.childText代码>就是这样。我必须使用$root。谢谢