只有存在documentation.files时才需要运行以下代码。否则它不应该执行。
类似于:<!-- if (condition-here) -- >
<!-- ko foreach: documentation.files -->
<tr>
<th>
<a data-bind="attr: { href: file_link[$root.locale.selected_locale()]}" target="_blank">
<div class="block" data-bind="html: file_name[$root.locale.selected_locale()]"></div>
</a>
</th>
<!-- /ko -->
任何帮助都会感激不尽。
答案 0 :(得分:1)
将其包装成div
<div data-bind="if: documentation.files">
...
</div>
或
<!-- ko if: documentation.files -->
...
<!-- /ko -->
答案 1 :(得分:1)
如果没有初始化,这应该可以解决问题:
<!-- ko if: documentation.files -- >
如果它不是undefined
,那就会继续。
或者如果它被设置为空数组:
<!-- ko if: documentation.files.length > 0 -- >
我猜测它是你需要的第一个案例,否则你的foreach
会在没有这个检查的情况下工作。
答案 2 :(得分:0)
好的,这是您的网络浏览器对您有所帮助并导致问题的一种情况。在这个例子中
<!-- ko foreach: documentation.files -->
<tr>
<th>
<a data-bind="attr: { href: file_link[$root.locale.selected_locale()]}" target="_blank">
<div class="block" data-bind="html: file_name[$root.locale.selected_locale()]"></div>
</a>
</th>
</tr>
<!-- /ko -->
看起来你正在尝试在表格中进行此绑定。如果是这种情况,他们很可能会从表中删除注释块并将其置于其前面。导致这样的事实实际出现
<!-- ko foreach: documentation.files --> <!-- /ko -->
<table>
<tr>
<th>
<a data-bind="attr: { href: file_link[$root.locale.selected_locale()]}" target="_blank">
<div class="block" data-bind="html: file_name[$root.locale.selected_locale()]"></div>
</a>
</th>
</table>
现在问题显而易见,解决方法是使用thead标签并在该部分中执行foreach
<thead data-bind="foreach: documentation.files">
<tr>
<th>
<a data-bind="attr: { href: file_link[$root.locale.selected_locale()]}" target="_blank">
<div class="block" data-bind="html: file_name[$root.locale.selected_locale()]"></div>
</a>
</th>
</tr>
</thead>
或者如果您正在使用表体,请使用。如果这是直接复制,您需要关闭表格行标记