Knockout.js 每个循环的击倒中断

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}"><

对于下面的代码,当满足if条件时,我需要中断循环

我阅读了文档,但没有找到打破这一点的方法

<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的问题。