Knockout.js 每个循环的击倒中断
对于下面的代码,当满足if条件时,我需要中断循环 我阅读了文档,但没有找到打破这一点的方法Knockout.js 每个循环的击倒中断,knockout.js,Knockout.js,对于下面的代码,当满足if条件时,我需要中断循环 我阅读了文档,但没有找到打破这一点的方法 <li> <!-- ko foreach: $parents[2].productData --> <!-- ko if: repositoryId == $parent.productId --> <a data-bind="ccLink: {route: '/'+$parent.productId}"><
<li>
<!-- ko foreach: $parents[2].productData -->
<!-- ko if: repositoryId == $parent.productId -->
<a data-bind="ccLink: {route: '/'+$parent.productId}"><img data-bind="attr:{src: mediumImageURLs[0]}" /></a>
<!-- /ko -->
<!-- /ko -->
</li>
如评论中所述,您不能中断ko foreach
,但可以根据传递给if
绑定的条件绕过每个迭代。只需将循环中断的条件传递给if
绑定即可
下面是一个在值大于3时中断foreach
的示例
//这是我的数据模型
var ViewModel=函数(){
this.contents=ko.observearray([1,2,3,4,5]);
};
ko.applyBindings(新的ViewModel());//这使得击倒开始工作
p{
背景:灰色;
填充:10px;
利润率:10px;
}
为避免性能问题,请使用slice
<div data-bind="foreach: contents.slice(0, 20)">
为什么需要在标记中中断foreach循环?这似乎是一个错误。你应该过滤你的数组,只过滤你想先渲染的元素,然后再对这些元素进行foreach。你必须把ko foreach
看作是一个常规的for
循环,但它并不是要这样使用的。虽然这确实达到了要求,但请记住foreach并不是真正的中断。HTML只是不进行渲染,但是foreach
会一直运行,直到到达数组的末尾。当阵列较大时,这可能会成为性能问题。@Ray是的!如果阵列较大,可能会导致性能问题。谢谢你指出。我只是想解决OP的问题。