【发布时间】:2012-05-23 02:37:26
【问题描述】:
所以我有一个模板,用于对一些可能有子元素的对象进行递归。我已经让 if 语句按照我想要的方式工作(我认为)。但是,只有在 if 语句之前有一个额外的 li 时,我的子元素才会出现。
这是我的模板
<script type="text/html" id="journalTemplate">
<li data-bind="text: Description">
<div>
<li data-bind = "visible: IsGroup"></li>
<!-- ko if: IsGroup -->
<ol data-bind="template: {name: 'journalTemplate', foreach: ChildEntities}">
</ol>
<!-- /ko -->
</div>
</li>
我正在使用数组映射,因此没有要显示的真实视图模型,但 C# 对象非常简单:它有一个描述、一个布尔 IsGroup 和一个 ChildEntities 列表(如果 IsGroup 为 false,则为 null,作为旁注)。如果我没有空的 li,if 语句的注释块甚至不会出现。
有什么想法吗?
【问题讨论】:
-
我不太关注。上面的模板有效吗?或者您在 KO if 语句之前需要另一个 LI 元素才能使其工作?目前您的上述标记无效。 div 中不能有 LI 元素。
-
你能添加一个你的问题的jsfiddle吗?
-
@madcapnmckay:现在它可以工作,但是当我实际上不想要那个 li 时,它有那个
- 。我只想要带有文本的 li 和 sub ol。 (我已经删除了 div,我只是补充说希望它能解决我的问题,但它没有)。我不确定如何放置 jsfiddle,因为我正在从数据库中的实际数据填充我的 js 对象。不过,我会开始模拟一些东西。
-
Here's 一个 js 小提琴。它在小提琴中看起来是正确的,因为它没有显示空的 li。不过,我不希望空的 li 在那里。但是,如果没有空的 li,它就不能在子项上正确运行模板。
标签: knockout.js