Javascript 仅在最后一个索引处检查foreach中的if条件

Javascript 仅在最后一个索引处检查foreach中的if条件,javascript,knockout.js,Javascript,Knockout.js,嗨,我有一个场景,我有一个可观察数组的可观察数组。这是我的标记看起来的样子: <div class="slider-wrap cycle-slideshow" data-cycle-fx="scrollHorz" data-cycle-timeout="0" data-cycle-slides="> section" data-cycle-prev=".slider-nav .prev" data-cycle-next=".slider-nav .next" data-cycle-p

嗨,我有一个场景,我有一个可观察数组的可观察数组。这是我的标记看起来的样子:

<div class="slider-wrap cycle-slideshow" data-cycle-fx="scrollHorz" data-cycle-timeout="0" data-cycle-slides="> section" data-cycle-prev=".slider-nav .prev" data-cycle-next=".slider-nav .next" data-cycle-pager=".slider-bullets" data-bind="foreach: category().questions()">
    <section data-bind="foreach: $data">   
        <article>
            <!-- ko if: hasGrade-->
            <header data-bind="text: $data.description"></header>
            <ul>
                <li><a href="#">1</a></li>
                <li><a href="#">2</a></li>
                <li><a href="#">3</a></li>
                <li><a href="#">4</a></li>
                <li><a href="#">5</a></li>
                <li><a href="#">6</a></li>
                <li><a href="#">7</a></li>
                <li><a href="#">8</a></li>
                <li><a href="#">9</a></li>
                <li><a href="#">10</a></li>
            </ul>
            <span data-bind="text: $parent.$index"></span>
            <!-- /ko -->
            <!-- ko if: hasMemo-->
            <header data-bind="text: $data.memoTitle"></header>
            <textarea></textarea>
            <!-- /ko -->
        </article>
        <!-- /ko -->
        <!-- ko if: $parent.$parent.hasMemo-->
        <article>
            <header data-bind="text: $parent.$parent.memoTitle"></header>
            <textarea></textarea>
        </article>
        <!-- /ko -->
    </section>
</div>

在我们的例子中,是问题ID为55的元素。有什么方法可以实现这一点吗?

foreach
绑定中,您可以使用特殊的
$index
变量来引用您在循环中的位置。那么检查就很简单了

<!-- ko if: $parent.$parent.hasMemo() && $index() + 1 === $parent.length -->
<article>
    <header data-bind="text: $parent.$parent.memoTitle"></header>
    <textarea></textarea>
</article>
<!-- /ko -->


请注意,当您在绑定中使用复杂的JS表达式时(与单个可观察对象或变量的名称相反),您需要显式地展开可观察对象。因此,
$index()
$parent.$parent.hasMemo()

中的括号取决于是否能够更改标记。大多数插件都允许对其进行修改。它有什么执照?否则,,您需要手动将所有这些属性设置为false。我刚刚获得了将if条件绑定到函数的idea,该函数将以父可观察数组索引和子可观察数组索引作为参数,我可以在javascript中检查我们正在迭代的当前元素是什么,并返回true或false。我唯一的问题是我不知道如何获得父索引,你能帮我吗?
<!-- ko if: $parent.$parent.hasMemo() && $index() + 1 === $parent.length -->
<article>
    <header data-bind="text: $parent.$parent.memoTitle"></header>
    <textarea></textarea>
</article>
<!-- /ko -->