Javascript Knockout.js:包括foreach循环中的静态内容

Javascript Knockout.js:包括foreach循环中的静态内容,javascript,knockout.js,foreach,Javascript,Knockout.js,Foreach,最近这场淘汰赛的难题让我想撞上一堵墙,把自己击倒。。所以,让我们看看是否有人能帮我减轻一些痛苦:) 众所周知,在剔除ForEach之前和之后添加静态元素非常简单: <div id="myContainer"> <p>Element Before The Loop</p> <!-- ko foreach: myData --> <p data-bind="text: myText"></p> &

最近这场淘汰赛的难题让我想撞上一堵墙,把自己击倒。。所以,让我们看看是否有人能帮我减轻一些痛苦:)

众所周知,在剔除ForEach之前和之后添加静态元素非常简单:

<div id="myContainer">
    <p>Element Before The Loop</p>
    <!-- ko foreach: myData -->
    <p data-bind="text: myText"></p>
    <!-- /ko -->
    <p>Element After The Loop</p>
</tr> 

循环之前的元素

循环后的元素

然而,我的需求包括在一个设定点中断迭代循环流,包括一个静态元素,然后继续循环流

下面是一个伪代码样式的示例。这里的要求是,给定ForEach中的“X”数据项列表,我希望输出前5个,然后是我的静态元素,然后是从第6个开始的其余数据项:

<div id="myContainer">        
    <!-- ko foreach[1-5]: myData -->
    <p data-bind="text: myText"></p>
    <!-- /ko -->

    <p>MY STATIC ELEMENT</p>

    <!-- ko foreach[6+]: myData -->
    <p data-bind="text: myText"></p>
    <!-- /ko -->       
</div> 

我的静态元素

有人能为这样的任务提供合适的语法建议吗? 非常感谢任何能为这一点发光的人。

您可以使用,以及:


静电

var-vm={
项目:ko.observableArray([])
};
对于(var x=1;x
您可以使用,以及:


静电

var-vm={
项目:ko.observableArray([])
};
对于(var x=1;x
您可以使用,以及:


静电

var-vm={
项目:ko.observableArray([])
};
对于(var x=1;x
您可以使用,以及:


静电

var-vm={
项目:ko.observableArray([])
};
对于(var x=1;x

始终可以使用普通切片函数将阵列切片为两部分

<div>
    <!-- ko foreach: items().slice(0, 5) -->

     <!-- /ko -->
     <p>MY STATIC ELEMENT</p>
     <!-- ko foreach: items().slice(5) -->

     <!-- /ko -->
</div>

我的静态元素


如果愿意,您可以在模型中这样做,以避免VM中的逻辑。缺点是您将foreach的内容复制两次;这可以移动到模板中以避免问题。

您始终可以使用正常的切片函数将数组分为两部分

<div>
    <!-- ko foreach: items().slice(0, 5) -->

     <!-- /ko -->
     <p>MY STATIC ELEMENT</p>
     <!-- ko foreach: items().slice(5) -->

     <!-- /ko -->
</div>

我的静态元素


如果愿意,您可以在模型中这样做,以避免VM中的逻辑。缺点是您将foreach的内容复制两次;这可以移动到模板中以避免问题。

您始终可以使用正常的切片函数将数组分为两部分

<div>
    <!-- ko foreach: items().slice(0, 5) -->

     <!-- /ko -->
     <p>MY STATIC ELEMENT</p>
     <!-- ko foreach: items().slice(5) -->

     <!-- /ko -->
</div>

我的静态元素


如果愿意,您可以在模型中这样做,以避免VM中的逻辑。缺点是您将foreach的内容复制两次;这可以移动到模板中以避免问题。

您始终可以使用正常的切片函数将数组分为两部分

<div>
    <!-- ko foreach: items().slice(0, 5) -->

     <!-- /ko -->
     <p>MY STATIC ELEMENT</p>
     <!-- ko foreach: items().slice(5) -->

     <!-- /ko -->
</div>

我的静态元素


如果您愿意,您可以在模型中这样做,以避免VM中的逻辑。缺点是您将foreach的内容复制了两次;这可以移动到模板中以避免问题。

当存在公平问题@CrimsonChris时,您需要显示静态元素吗?在我的情况下,我可以基本上保证始终存在fi但是为了将来阅读这个问题的人的利益,如果你知道任何相关的注意事项,请详细说明。James Thorpe的答案对于你的用例来说绝对是最简单的。但是,如果静态元素总是可见的,不管项目的数量如何……你需要做更多的工作。我已经准备好了在我的答案上注明日期,以便显示是否少于5个,但您仍然需要至少1个才能触发
foreach
循环。如果可能有0个,我可能会采取不同的方法来整体显示内容。在我的情况下,当存在公平问题@CrimsonChris时,您需要显示静态元素吗n基本上保证始终有五个项目,因此没有。但是为了将来阅读此问题的任何人的利益,如果您知道任何相关的注意事项,请详细说明。James Thorpe的答案对于您的用例来说绝对是最简单的。但是,如果静态元素始终可见,而不管i的数量是多少tems…你需要做更多的工作。我已经更新了我的答案,以便显示少于5个,但你仍然需要至少1个来触发
foreach
循环。如果可能有0个,我可能会采取不同的方法来整体显示内容。如果有,你需要显示静态元素’s Fair question@CrimsonChris,在我的例子中,我基本上可以保证总是有五个项目,所以没有。但是为了将来阅读这个问题的人的利益,如果你知道任何相关的注意点,请详细说明。James Thorpe的答案对于你的用例来说绝对是最简单的。但是,如果静态元素无论项目数量多少,始终可见…您需要做更多的工作。我更新了我的答案,以便显示少于5个项目,但您仍然需要至少1个项目来触发
foreach
循环。如果可能存在0个项目,我可能会采取不同的方法来显示整个项目的内容当有公平的问题@CrimsonChris时,你需要显示静态元素,在我的情况下,我可以基本上保证总是有五个项目,所以没有。但是为了将来阅读这个问题的人的利益,如果你知道任何相关的注意点,请详细说明。詹姆斯·索普的答案对于你来说绝对是最简单的那好,呵呵