2013-08-01 81 views
0

您好我有一个情况我有观察到arrays.This可观察到的阵列就是我的标记看起来像检查在foreach一个if条件:只在最后一个索引

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

我不能改变的标记的结构,因为我使用的插件,并没有使用它的豪华。

最后,如果条件应该只进行检查时,最后一个元素iterated.This是模型:

{ 
memo: null, 
categoryId: 1, 
title: "Docent", 
hasMemo: true, 
memoIsMandatory: false, 
memoTitle: "Docent Opmerkingen", 
questions: [ 
[ 
{ 
memo: null, 
grade: null, 
description: "De docent is goed voorbereid", 
memoTitle: "De docent is goed voorbereid", 
questionId: 11, 
hasGrade: false, 
hasMemo: true, 
showOnlyMemo: true 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent heeft kennis van zaken", 
memoTitle: "De docent heeft kennis van zaken", 
questionId: 12, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent kan de onderwerpen boeiend uitleggen", 
memoTitle: "De docent kan de onderwerpen boeiend uitleggen", 
questionId: 13, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent gaat goed in op de vragen uit de groep", 
memoTitle: "De docent gaat goed in op de vragen uit de groep", 
questionId: 14, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent stimuleert de groep tot actieve deelname", 
memoTitle: "De docent stimuleert de groep tot actieve deelname", 
questionId: 15, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
} 
], 
[ 
{ 
memo: null, 
grade: null, 
description: "De docent voegt inhoudelijk iets toe aan het studiemateriaal", 
memoTitle: "De docent voegt inhoudelijk iets toe aan het studiemateriaal", 
questionId: 16, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent is praktijkgericht", 
memoTitle: "De docent is praktijkgericht", 
questionId: 17, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "Totaal oordeel over de docent", 
memoTitle: "Totaal oordeel over de docent", 
questionId: 18, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
} 
] 
] 
}, 
{ 
memo: null, 
categoryId: 7, 
title: "Opbouw programma en studiemateriaal", 
hasMemo: true, 
memoIsMandatory: false, 
memoTitle: "Opbouw programma en studiemateriaal Opmerkingen", 
questions: [ 
[ 
{ 
memo: null, 
grade: null, 
description: "Het studieprogramma is duidelijk opgebouwd", 
memoTitle: "Het studieprogramma is duidelijk opgebouwd", 
questionId: 54, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "Het studiemateriaal is compleet, goed leesbaar en praktijkgericht", 
memoTitle: "Het studiemateriaal is compleet, goed leesbaar en praktijkgericht", 
questionId: 55, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
} 
] 
] 
} 
] 

在我们的情况下,它与questionId 55.IS有没有办法实现这个元素?

+0

淘汰种类取决于能够改变标记。大多数插件允许修改它们。它在什么许可下?否则,您需要手动将'hasMemo'设置为false。 – FakeRainBrigand

+0

我刚刚得到了将if条件绑定到一个函数的功能,该函数将父类可观察数组索引和子可观察数组索引与我可以在我的javascript中检查什么是我们正在迭代的当前元素并返回true或false.My唯一的问题是,我不知道如何获得父母索引可以帮助我吗? – aleczandru

回答

2

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()中的括号。

相关问题