【发布时间】:2013-08-09 20:43:38
【问题描述】:
我正在使用 Hot SPA 模板(使用淘汰赛和 durandal)在屏幕上显示某些内容。 我的 html 代码变得很长,所以我试图将它拆分成更小的可重用组件。
代码呈现查找并显示我期望的所有内容。但我似乎失去了主视图模型的句柄
从我的主要观点来看,我尝试了
<!-- ko if: A -->
<!--ko compose: { model: $data, view: '../tmpl/A'} -->
<!--/ko-->
<!--/ko-->
在我的 tmpl/A.html 文件中,我有以下内容:
<!-- ko foreach: array -->
<!--ko compose: { model: $data, view: '../tmpl/tmpl1'} -->
<!--/ko-->
<!--/ko-->
现在从 /tmpl/tmpl1 我尝试将按钮绑定到我的模型 做点什么
它什么都不做。 从 /tmpl/tmpl1 内部看来,我只能看到数组项。 我试着打印出来
<div data-bind="text: ko.toJSON($data)"></div>
<div data-bind="text: ko.toJSON($root)"></div>
两者都只显示数组项。
请告知我能做什么。
【问题讨论】:
-
您确定没有收到 JavaScript 错误吗? ko.toJSON($root) 应该产生一个循环引用。
-
我从 ko compose 中删除了 'model: $data',现在父上下文流过。案件已解决。
-
当使用 你必须注意一件事。 Durandal 可能会摆弄第一个 div 以使其成为包装器。因此,您通常应该制作自己的不带任何绑定的 div 包装器:
标签: knockout.js viewmodel root durandal