Javascript Knockout.js:包括foreach循环中的静态内容
最近这场淘汰赛的难题让我想撞上一堵墙,把自己击倒。。所以,让我们看看是否有人能帮我减轻一些痛苦:) 众所周知,在剔除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> &
<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时,你需要显示静态元素,在我的情况下,我可以基本上保证总是有五个项目,所以没有。但是为了将来阅读这个问题的人的利益,如果你知道任何相关的注意点,请详细说明。詹姆斯·索普的答案对于你来说绝对是最简单的那好,呵呵