KnockoutJS foreach 循环中的非重复元素
Non-repeated element inside KnockoutJS foreach loop
我正在尝试创建一个显示一堆子组件的 knockout.js 组件(带有 CSS3 网格),我知道这可以通过类似的方式完成:
<div class="items grid" data-bind="foreach: { data: items, as: 'item' }">
<item-component params="data: item" class="grid-item"></item-component>
</div>
问题是我无法弄清楚如何将未重复的项目放入此列表中。最终,我想按照这些思路生成一些东西:
<div class="items grid">
<div class="something-else grid-item"></div>
<item-component class="grid-item"></item-component>
<item-component class="grid-item"></item-component>
<item-component class="grid-item"></item-component>
</div>
我不能将 something-else
放在 foreach
绑定元素之外的原因是它也是一个网格项,所以它必须是网格的直接子项。我想到通过 jquery 的 append
手动附加它,但是对于 MVVM,这是一个糟糕的想法(无论如何它都不起作用)。
有人知道用 knockout.js 做这个的方法吗?
如果我没有正确理解您的要求,看来您需要 containerless control flow. It has been talked about in the 2nd point of this 。
它允许你做这样的事情:
<ul>
<li class="header">Header item</li>
<!-- ko foreach: myItems -->
<li>Item <span data-bind="text: $data"></span></li>
<!-- /ko -->
<li class="tail">Tail item</li>
</ul>
输出:
<ul>
<li class="header">Header item</li>
<li>Item <span>Spoon</span></li>
<li>Item <span>Fork</span></li>
<li class="tail">Tail item</li>
</ul>
我正在尝试创建一个显示一堆子组件的 knockout.js 组件(带有 CSS3 网格),我知道这可以通过类似的方式完成:
<div class="items grid" data-bind="foreach: { data: items, as: 'item' }">
<item-component params="data: item" class="grid-item"></item-component>
</div>
问题是我无法弄清楚如何将未重复的项目放入此列表中。最终,我想按照这些思路生成一些东西:
<div class="items grid">
<div class="something-else grid-item"></div>
<item-component class="grid-item"></item-component>
<item-component class="grid-item"></item-component>
<item-component class="grid-item"></item-component>
</div>
我不能将 something-else
放在 foreach
绑定元素之外的原因是它也是一个网格项,所以它必须是网格的直接子项。我想到通过 jquery 的 append
手动附加它,但是对于 MVVM,这是一个糟糕的想法(无论如何它都不起作用)。
有人知道用 knockout.js 做这个的方法吗?
如果我没有正确理解您的要求,看来您需要 containerless control flow. It has been talked about in the 2nd point of this
它允许你做这样的事情:
<ul>
<li class="header">Header item</li>
<!-- ko foreach: myItems -->
<li>Item <span data-bind="text: $data"></span></li>
<!-- /ko -->
<li class="tail">Tail item</li>
</ul>
输出:
<ul>
<li class="header">Header item</li>
<li>Item <span>Spoon</span></li>
<li>Item <span>Fork</span></li>
<li class="tail">Tail item</li>
</ul>